{
  "id": "abcd537085cfa6ec4c528e5e1aac1f36",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.11",
  "solcLongVersion": "0.8.11+commit.d7f03943",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/protocol/integration/wrap/notional/nBeaconProxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\nimport { nBeaconProxy as nBeaconProxyBase } from \"wrapped-fcash/contracts/proxy/nBeaconProxy.sol\";\n\ncontract nBeaconProxy is nBeaconProxyBase {\n    constructor(address beacon, bytes memory data) payable nBeaconProxyBase(beacon, data) { }\n}\n"
      },
      "wrapped-fcash/contracts/proxy/nBeaconProxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\n\nimport \"openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol\";\n\ncontract nBeaconProxy is BeaconProxy {\n    constructor(address beacon, bytes memory data) payable BeaconProxy(beacon, data) { }\n\n    receive() external payable override {\n        // Allow ETH transfers to succeed\n    }\n}"
      },
      "openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/BeaconProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IBeacon.sol\";\nimport \"../Proxy.sol\";\nimport \"../ERC1967/ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.\n *\n * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n * conflict with the storage layout of the implementation behind the proxy.\n *\n * _Available since v3.4._\n */\ncontract BeaconProxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the proxy with `beacon`.\n     *\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n     * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity\n     * constructor.\n     *\n     * Requirements:\n     *\n     * - `beacon` must be a contract with the interface {IBeacon}.\n     */\n    constructor(address beacon, bytes memory data) payable {\n        assert(_BEACON_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.beacon\")) - 1));\n        _upgradeBeaconToAndCall(beacon, data, false);\n    }\n\n    /**\n     * @dev Returns the current beacon address.\n     */\n    function _beacon() internal view virtual returns (address) {\n        return _getBeacon();\n    }\n\n    /**\n     * @dev Returns the current implementation address of the associated beacon.\n     */\n    function _implementation() internal view virtual override returns (address) {\n        return IBeacon(_getBeacon()).implementation();\n    }\n\n    /**\n     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n     *\n     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n     *\n     * Requirements:\n     *\n     * - `beacon` must be a contract.\n     * - The implementation returned by `beacon` must be a contract.\n     */\n    function _setBeacon(address beacon, bytes memory data) internal virtual {\n        _upgradeBeaconToAndCall(beacon, data, false);\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {BeaconProxy} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"
      },
      "openzeppelin-contracts-V4/proxy/Proxy.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0, 0, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n     * and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internall call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _beforeFallback();\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n     * is empty.\n     */\n    receive() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n     * call, or as part of the Solidity `fallback` or `receive` functions.\n     *\n     * If overriden should call `super._beforeFallback()`.\n     */\n    function _beforeFallback() internal virtual {}\n}\n"
      },
      "openzeppelin-contracts-V4/proxy/ERC1967/ERC1967Upgrade.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n    // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Perform implementation upgrade\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeTo(address newImplementation) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Perform implementation upgrade with additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCall(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _upgradeTo(newImplementation);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(newImplementation, data);\n        }\n    }\n\n    /**\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n            _setImplementation(newImplementation);\n        } else {\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n                require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n            } catch {\n                revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n            }\n            _upgradeToAndCall(newImplementation, data, forceCall);\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _getAdmin() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _changeAdmin(address newAdmin) internal {\n        emit AdminChanged(_getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n     */\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Emitted when the beacon is upgraded.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function _getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n        require(\n            Address.isContract(IBeacon(newBeacon).implementation()),\n            \"ERC1967: beacon implementation is not a contract\"\n        );\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n    }\n\n    /**\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n     *\n     * Emits a {BeaconUpgraded} event.\n     */\n    function _upgradeBeaconToAndCall(\n        address newBeacon,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        }\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/interfaces/draft-IERC1822.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"
      },
      "openzeppelin-contracts-V4/utils/Address.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/utils/StorageSlot.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly {\n            r.slot := slot\n        }\n    }\n}\n"
      },
      "wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\n\nimport \"openzeppelin-contracts-V4/utils/Create2.sol\";\nimport \"./nBeaconProxy.sol\";\n\ncontract WrappedfCashFactory {\n\n    /// @dev the Beacon contract here is an UpgradeableBeacon proxy, the contract\n    /// at this address can be upgraded which will upgrade all deployed wrappers.\n    address public immutable BEACON;\n    bytes32 public constant SALT = 0;\n\n    /// @notice Emitted when a new fCash wrapper has been deployed\n    event WrapperDeployed(uint16 currencyId, uint40 maturity, address wrapper);\n\n    constructor(address _beacon) {\n        BEACON = _beacon;\n    }\n\n    function _getByteCode(uint16 currencyId, uint40 maturity) internal view returns (bytes memory) {\n        bytes memory initCallData = abi.encodeWithSignature(\"initialize(uint16,uint40)\", currencyId, maturity);\n        return abi.encodePacked(type(nBeaconProxy).creationCode, abi.encode(BEACON, initCallData));\n    }\n\n    function deployWrapper(uint16 currencyId, uint40 maturity) external returns (address) {\n        address _computedWrapper = computeAddress(currencyId, maturity);\n\n        if (Address.isContract(_computedWrapper)) {\n            // If wrapper has already been deployed then just return it's address\n            return _computedWrapper;\n        } else {\n            address wrapper = Create2.deploy(0, SALT, _getByteCode(currencyId, maturity));\n            emit WrapperDeployed(currencyId, maturity, wrapper);\n            return wrapper;\n        }\n    }\n\n    function computeAddress(uint16 currencyId, uint40 maturity) public view returns (address) {\n        return Create2.computeAddress(SALT, keccak256(_getByteCode(currencyId, maturity)));\n    }\n}"
      },
      "openzeppelin-contracts-V4/utils/Create2.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Create2.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n * `CREATE2` can be used to compute in advance the address where a smart\n * contract will be deployed, which allows for interesting new mechanisms known\n * as 'counterfactual interactions'.\n *\n * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n * information.\n */\nlibrary Create2 {\n    /**\n     * @dev Deploys a contract using `CREATE2`. The address where the contract\n     * will be deployed can be known in advance via {computeAddress}.\n     *\n     * The bytecode for a contract can be obtained from Solidity with\n     * `type(contractName).creationCode`.\n     *\n     * Requirements:\n     *\n     * - `bytecode` must not be empty.\n     * - `salt` must have not been used for `bytecode` already.\n     * - the factory must have a balance of at least `amount`.\n     * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.\n     */\n    function deploy(\n        uint256 amount,\n        bytes32 salt,\n        bytes memory bytecode\n    ) internal returns (address) {\n        address addr;\n        require(address(this).balance >= amount, \"Create2: insufficient balance\");\n        require(bytecode.length != 0, \"Create2: bytecode length is zero\");\n        assembly {\n            addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)\n        }\n        require(addr != address(0), \"Create2: Failed on deploy\");\n        return addr;\n    }\n\n    /**\n     * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n     * `bytecodeHash` or `salt` will result in a new destination address.\n     */\n    function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {\n        return computeAddress(salt, bytecodeHash, address(this));\n    }\n\n    /**\n     * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n     * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.\n     */\n    function computeAddress(\n        bytes32 salt,\n        bytes32 bytecodeHash,\n        address deployer\n    ) internal pure returns (address) {\n        bytes32 _data = keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHash));\n        return address(uint160(uint256(_data)));\n    }\n}\n"
      },
      "contracts/protocol/integration/wrap/notional/WrappedfCashFactory.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\nimport { WrappedfCashFactory as WrappedfCashFactoryBase } from \"wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol\";\n\ncontract WrappedfCashFactory is WrappedfCashFactoryBase {\n    constructor(address _beacon) WrappedfCashFactoryBase(_beacon){\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    using Address for address;\n\n    function safeTransfer(\n        IERC20 token,\n        address to,\n        uint256 value\n    ) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function safeTransferFrom(\n        IERC20 token,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(\n        IERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        require(\n            (value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function safeIncreaseAllowance(\n        IERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n    }\n\n    function safeDecreaseAllowance(\n        IERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        unchecked {\n            uint256 oldAllowance = token.allowance(address(this), spender);\n            require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n            uint256 newAllowance = oldAllowance - value;\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        if (returndata.length > 0) {\n            // Return data is optional\n            require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n        }\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/token/ERC20/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"
      },
      "wrapped-fcash/contracts/wfCashBase.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\n\nimport \"./lib/Constants.sol\";\nimport \"./lib/DateTime.sol\";\nimport \"./lib/EncodeDecode.sol\";\nimport \"../interfaces/notional/INotionalV2.sol\";\nimport \"../interfaces/notional/IWrappedfCash.sol\";\nimport \"../interfaces/IWETH9.sol\";\nimport \"openzeppelin-contracts-V4/utils/Strings.sol\";\nimport \"openzeppelin-contracts-V4/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol\";\nimport \"openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol\";\n\nabstract contract wfCashBase is ERC777Upgradeable, IWrappedfCash {\n    using SafeERC20 for IERC20;\n\n    /// @notice address to the NotionalV2 system\n    INotionalV2 public immutable NotionalV2;\n    IWETH9 public immutable WETH;\n\n    /// @dev Storage slot for fCash id. Read only and set on initialization\n    uint256 private _fCashId;\n\n    /// @notice Constructor is called only on deployment to set the Notional address, rest of state\n    /// is initialized on the proxy.\n    /// @dev Ensure initializer modifier is on the constructor to prevent an attack on UUPSUpgradeable contracts\n    constructor(INotionalV2 _notional, IWETH9 _weth) initializer {\n        NotionalV2 = _notional;\n        WETH = _weth;\n    }\n\n    /// @notice Initializes a proxy for a specific fCash asset\n    function initialize(uint16 currencyId, uint40 maturity) external override initializer {\n        CashGroupSettings memory cashGroup = NotionalV2.getCashGroup(currencyId);\n        require(cashGroup.maxMarketIndex > 0, \"Invalid currency\");\n        // Ensure that the maturity is not past the max market index, also ensure that the maturity\n        // is not in the past. This statement will allow idiosyncratic (non-tradable) fCash assets.\n        require(\n            DateTime.isValidMaturity(cashGroup.maxMarketIndex, maturity, block.timestamp),\n            \"Invalid maturity\"\n        );\n\n        // Get the corresponding fCash ID\n        _fCashId = EncodeDecode.encodeERC1155Id(currencyId, maturity, Constants.FCASH_ASSET_TYPE);\n\n        (IERC20 underlyingToken, /* */) = getUnderlyingToken();\n        (IERC20 assetToken, /* */, /* */) = getAssetToken();\n\n        string memory _symbol = address(underlyingToken) == Constants.ETH_ADDRESS\n            ? \"ETH\"\n            : IERC20Metadata(address(underlyingToken)).symbol();\n\n        string memory _maturity = Strings.toString(maturity);\n\n        __ERC777_init(\n            // name\n            string(abi.encodePacked(\"Wrapped f\", _symbol, \" @ \", _maturity)),\n            // symbol\n            string(abi.encodePacked(\"wf\", _symbol, \":\", _maturity)),\n            // no default operators\n            new address[](0)\n        );\n\n        // Set approvals for Notional. It is possible for an asset token address to equal the underlying\n        // token address when there is no money market involved.\n        assetToken.safeApprove(address(NotionalV2), type(uint256).max);\n        if (\n            address(assetToken) != address(underlyingToken) &&\n            address(underlyingToken) != Constants.ETH_ADDRESS\n        ) {\n            underlyingToken.safeApprove(address(NotionalV2), type(uint256).max);\n        }\n    }\n\n    /// @notice Returns the underlying fCash ID of the token\n    function getfCashId() public view override returns (uint256) {\n        return _fCashId;\n    }\n\n    /// @notice Returns the underlying fCash maturity of the token\n    function getMaturity() public view override returns (uint40 maturity) {\n        (/* */, maturity, /* */) = EncodeDecode.decodeERC1155Id(_fCashId);\n    }\n\n    /// @notice True if the fCash has matured, assets mature exactly on the block time\n    function hasMatured() public view override returns (bool) {\n        return getMaturity() <= block.timestamp;\n    }\n\n    /// @notice Returns the underlying fCash currency\n    function getCurrencyId() public view override returns (uint16 currencyId) {\n        (currencyId, /* */, /* */) = EncodeDecode.decodeERC1155Id(_fCashId);\n    }\n\n    /// @notice Returns the components of the fCash idd\n    function getDecodedID() public view override returns (uint16 currencyId, uint40 maturity) {\n        (currencyId, maturity, /* */) = EncodeDecode.decodeERC1155Id(_fCashId);\n    }\n\n    /// @notice fCash is always denominated in 8 decimal places\n    function decimals() public pure override returns (uint8) {\n        return 8;\n    }\n\n    /// @notice Returns the current market index for this fCash asset. If this returns\n    /// zero that means it is idiosyncratic and cannot be traded.\n    function getMarketIndex() public view override returns (uint8) {\n        (uint256 marketIndex, bool isIdiosyncratic) = DateTime.getMarketIndex(\n            Constants.MAX_TRADED_MARKET_INDEX,\n            getMaturity(),\n            block.timestamp\n        );\n\n        if (isIdiosyncratic) return 0;\n        // Market index as defined does not overflow this conversion\n        return uint8(marketIndex);\n    }\n\n    /// @notice Returns the token and precision of the token that this token settles\n    /// to. For example, fUSDC will return the USDC token address and 1e6. The zero\n    /// address will represent ETH.\n    function getUnderlyingToken() public view override returns (IERC20 underlyingToken, int256 underlyingPrecision) {\n        (Token memory asset, Token memory underlying) = NotionalV2.getCurrency(getCurrencyId());\n\n        if (asset.tokenType == TokenType.NonMintable) {\n            // In this case the asset token is the underlying\n            return (IERC20(asset.tokenAddress), asset.decimals);\n        } else {\n            return (IERC20(underlying.tokenAddress), underlying.decimals);\n        }\n    }\n\n    /// @notice Returns the asset token which the fCash settles to. This will be an interest\n    /// bearing token like a cToken or aToken.\n    function getAssetToken() public view override returns (IERC20 assetToken, int256 underlyingPrecision, TokenType tokenType) {\n        (Token memory asset, /* Token memory underlying */) = NotionalV2.getCurrency(getCurrencyId());\n        return (IERC20(asset.tokenAddress), asset.decimals, asset.tokenType);\n    }\n\n    function getToken(bool useUnderlying) public view returns (IERC20 token, bool isETH) {\n        if (useUnderlying) {\n            (token, /* */) = getUnderlyingToken();\n        } else {\n            (token, /* */, /* */) = getAssetToken();\n        }\n        isETH = address(token) == Constants.ETH_ADDRESS;\n    }\n}\n"
      },
      "wrapped-fcash/contracts/lib/Constants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @title All shared constants for the Notional system should be declared here.\nlibrary Constants {\n    address internal constant ETH_ADDRESS = address(0);\n\n    // Token precision used for all internal balances, TokenHandler library ensures that we\n    // limit the dust amount caused by precision mismatches\n    int256 internal constant INTERNAL_TOKEN_PRECISION = 1e8;\n\n    // Max number of traded markets, also used as the maximum number of assets in a portfolio array\n    uint256 internal constant MAX_TRADED_MARKET_INDEX = 7;\n\n    // Internal date representations, note we use a 6/30/360 week/month/year convention here\n    uint256 internal constant DAY = 86400;\n    // We use six day weeks to ensure that all time references divide evenly\n    uint256 internal constant WEEK = DAY * 6;\n    uint256 internal constant MONTH = WEEK * 5;\n    uint256 internal constant QUARTER = MONTH * 3;\n    uint256 internal constant YEAR = QUARTER * 4;\n\n    // These constants are used in DateTime.sol\n    uint256 internal constant DAYS_IN_WEEK = 6;\n    uint256 internal constant DAYS_IN_MONTH = 30;\n    uint256 internal constant DAYS_IN_QUARTER = 90;\n\n    // Offsets for each time chunk denominated in days\n    uint256 internal constant MAX_DAY_OFFSET = 90;\n    uint256 internal constant MAX_WEEK_OFFSET = 360;\n    uint256 internal constant MAX_MONTH_OFFSET = 2160;\n    uint256 internal constant MAX_QUARTER_OFFSET = 7650;\n\n    // Offsets for each time chunk denominated in bits\n    uint256 internal constant WEEK_BIT_OFFSET = 90;\n    uint256 internal constant MONTH_BIT_OFFSET = 135;\n    uint256 internal constant QUARTER_BIT_OFFSET = 195;\n\n    uint8 internal constant FCASH_ASSET_TYPE = 1;\n    // Liquidity token asset types are 1 + marketIndex (where marketIndex is 1-indexed)\n    uint8 internal constant MIN_LIQUIDITY_TOKEN_INDEX = 2;\n    uint8 internal constant MAX_LIQUIDITY_TOKEN_INDEX = 8;\n\n    bytes2 internal constant UNMASK_FLAGS = 0x3FFF;\n    uint16 internal constant MAX_CURRENCIES = uint16(UNMASK_FLAGS);\n}\n"
      },
      "wrapped-fcash/contracts/lib/DateTime.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\npragma abicoder v2;\n\nimport \"./Constants.sol\";\n\nlibrary DateTime {\n\n    /// @notice Returns the current reference time which is how all the AMM dates are calculated.\n    function getReferenceTime(uint256 blockTime) internal pure returns (uint256) {\n        require(blockTime >= Constants.QUARTER);\n        return blockTime - (blockTime % Constants.QUARTER);\n    }\n\n    /// @notice Truncates a date to midnight UTC time\n    function getTimeUTC0(uint256 time) internal pure returns (uint256) {\n        require(time >= Constants.DAY);\n        return time - (time % Constants.DAY);\n    }\n\n    /// @notice These are the predetermined market offsets for trading\n    /// @dev Markets are 1-indexed because the 0 index means that no markets are listed for the cash group.\n    function getTradedMarket(uint256 index) internal pure returns (uint256) {\n        if (index == 1) return Constants.QUARTER;\n        if (index == 2) return 2 * Constants.QUARTER;\n        if (index == 3) return Constants.YEAR;\n        if (index == 4) return 2 * Constants.YEAR;\n        if (index == 5) return 5 * Constants.YEAR;\n        if (index == 6) return 10 * Constants.YEAR;\n        if (index == 7) return 20 * Constants.YEAR;\n\n        revert(\"Invalid index\");\n    }\n\n    /// @notice Determines if an idiosyncratic maturity is valid and returns the bit reference that is the case.\n    function isValidMaturity(\n        uint256 maxMarketIndex,\n        uint256 maturity,\n        uint256 blockTime\n    ) internal pure returns (bool) {\n        uint256 tRef = DateTime.getReferenceTime(blockTime);\n        uint256 maxMaturity = tRef + DateTime.getTradedMarket(maxMarketIndex);\n        // Cannot trade past max maturity\n        if (maturity > maxMaturity) return false;\n\n        // prettier-ignore\n        (/* */, bool isValid) = DateTime.getBitNumFromMaturity(blockTime, maturity);\n        return isValid;\n    }\n\n    /// @notice Returns the market index for a given maturity, if the maturity is idiosyncratic\n    /// will return the nearest market index that is larger than the maturity.\n    /// @return uint marketIndex, bool isIdiosyncratic\n    function getMarketIndex(\n        uint256 maxMarketIndex,\n        uint256 maturity,\n        uint256 blockTime\n    ) internal pure returns (uint256, bool) {\n        require(maxMarketIndex > 0, \"CG: no markets listed\");\n        require(maxMarketIndex <= Constants.MAX_TRADED_MARKET_INDEX, \"CG: market index bound\");\n        uint256 tRef = DateTime.getReferenceTime(blockTime);\n\n        for (uint256 i = 1; i <= maxMarketIndex; i++) {\n            uint256 marketMaturity = tRef + DateTime.getTradedMarket(i);\n            // If market matches then is not idiosyncratic\n            if (marketMaturity == maturity) return (i, false);\n            // Returns the market that is immediately greater than the maturity\n            if (marketMaturity > maturity) return (i, true);\n        }\n\n        revert(\"CG: no market found\");\n    }\n\n    /// @notice Given a bit number and the reference time of the first bit, returns the bit number\n    /// of a given maturity.\n    /// @return bitNum and a true or false if the maturity falls on the exact bit\n    function getBitNumFromMaturity(uint256 blockTime, uint256 maturity)\n        internal\n        pure\n        returns (uint256, bool)\n    {\n        uint256 blockTimeUTC0 = getTimeUTC0(blockTime);\n\n        // Maturities must always divide days evenly\n        if (maturity % Constants.DAY != 0) return (0, false);\n        // Maturity cannot be in the past\n        if (blockTimeUTC0 >= maturity) return (0, false);\n\n        // Overflow check done above\n        // daysOffset has no remainders, checked above\n        uint256 daysOffset = (maturity - blockTimeUTC0) / Constants.DAY;\n\n        // These if statements need to fall through to the next one\n        if (daysOffset <= Constants.MAX_DAY_OFFSET) {\n            return (daysOffset, true);\n        } else if (daysOffset <= Constants.MAX_WEEK_OFFSET) {\n            // (daysOffset - MAX_DAY_OFFSET) is the days overflow into the week portion, must be > 0\n            // (blockTimeUTC0 % WEEK) / DAY is the offset into the week portion\n            // This returns the offset from the previous max offset in days\n            uint256 offsetInDays =\n                daysOffset -\n                    Constants.MAX_DAY_OFFSET +\n                    (blockTimeUTC0 % Constants.WEEK) /\n                    Constants.DAY;\n            \n            return (\n                // This converts the offset in days to its corresponding bit position, truncating down\n                // if it does not divide evenly into DAYS_IN_WEEK\n                Constants.WEEK_BIT_OFFSET + offsetInDays / Constants.DAYS_IN_WEEK,\n                (offsetInDays % Constants.DAYS_IN_WEEK) == 0\n            );\n        } else if (daysOffset <= Constants.MAX_MONTH_OFFSET) {\n            uint256 offsetInDays =\n                daysOffset -\n                    Constants.MAX_WEEK_OFFSET +\n                    (blockTimeUTC0 % Constants.MONTH) /\n                    Constants.DAY;\n\n            return (\n                Constants.MONTH_BIT_OFFSET + offsetInDays / Constants.DAYS_IN_MONTH,\n                (offsetInDays % Constants.DAYS_IN_MONTH) == 0\n            );\n        } else if (daysOffset <= Constants.MAX_QUARTER_OFFSET) {\n            uint256 offsetInDays =\n                daysOffset -\n                    Constants.MAX_MONTH_OFFSET +\n                    (blockTimeUTC0 % Constants.QUARTER) /\n                    Constants.DAY;\n\n            return (\n                Constants.QUARTER_BIT_OFFSET + offsetInDays / Constants.DAYS_IN_QUARTER,\n                (offsetInDays % Constants.DAYS_IN_QUARTER) == 0\n            );\n        }\n\n        // This is the maximum 1-indexed bit num, it is never valid because it is beyond the 20\n        // year max maturity\n        return (256, false);\n    }\n}\n"
      },
      "wrapped-fcash/contracts/lib/EncodeDecode.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\n\nimport \"./Constants.sol\";\nimport \"./Types.sol\";\n\nlibrary EncodeDecode {\n\n    /// @notice Decodes asset ids\n    function decodeERC1155Id(uint256 id)\n        internal\n        pure\n        returns (\n            uint16 currencyId,\n            uint40 maturity,\n            uint8 assetType\n        )\n    {\n        assetType = uint8(id);\n        maturity = uint40(id >> 8);\n        currencyId = uint16(id >> 48);\n    }\n\n    /// @notice Encodes asset ids\n    function encodeERC1155Id(\n        uint256 currencyId,\n        uint256 maturity,\n        uint256 assetType\n    ) internal pure returns (uint256) {\n        require(currencyId <= Constants.MAX_CURRENCIES);\n        require(maturity <= type(uint40).max);\n        require(assetType <= Constants.MAX_LIQUIDITY_TOKEN_INDEX);\n\n        return\n            uint256(\n                (bytes32(uint256(uint16(currencyId))) << 48) |\n                (bytes32(uint256(uint40(maturity))) << 8) |\n                bytes32(uint256(uint8(assetType)))\n            );\n    }\n\n    function encodeLendTrade(\n        uint16 currencyId,\n        uint8 marketIndex,\n        uint88 fCashAmount,\n        uint32 minImpliedRate,\n        bool useUnderlying\n    ) internal pure returns (BatchLend[] memory action) {\n        action = new BatchLend[](1);\n        action[0].currencyId = currencyId;\n        action[0].depositUnderlying = useUnderlying;\n        action[0].trades = new bytes32[](1);\n        action[0].trades[0] = bytes32(\n            (uint256(uint8(TradeActionType.Lend)) << 248) |\n            (uint256(marketIndex) << 240) |\n            (uint256(fCashAmount) << 152) |\n            (uint256(minImpliedRate) << 120)\n        );\n    }\n\n    function encodeLendETHTrade(\n        uint16 currencyId,\n        uint8 marketIndex,\n        uint256 depositAmountExternal,\n        uint88 fCashAmount,\n        uint32 minImpliedRate\n    ) internal pure returns (BalanceActionWithTrades[] memory action) {\n        action = new BalanceActionWithTrades[](1);\n        action[0].actionType = DepositActionType.DepositUnderlying;\n        action[0].currencyId = currencyId;\n        action[0].depositActionAmount = depositAmountExternal;\n        action[0].withdrawEntireCashBalance = true;\n        action[0].redeemToUnderlying = true;\n        action[0].trades = new bytes32[](1);\n        action[0].trades[0] = bytes32(\n            (uint256(uint8(TradeActionType.Lend)) << 248) |\n            (uint256(marketIndex) << 240) |\n            (uint256(fCashAmount) << 152) |\n            (uint256(minImpliedRate) << 120)\n        );\n    }\n\n    function encodeBorrowTrade(\n        uint16 currencyId,\n        uint8 marketIndex,\n        uint88 fCashAmount,\n        uint32 maxImpliedRate,\n        bool toUnderlying\n    ) internal pure returns (BalanceActionWithTrades[] memory action) {\n        action = new BalanceActionWithTrades[](1);\n        action[0].actionType = DepositActionType.None;\n        action[0].currencyId = currencyId;\n        action[0].withdrawEntireCashBalance = true;\n        action[0].redeemToUnderlying = toUnderlying;\n        action[0].trades = new bytes32[](1);\n        action[0].trades[0] = bytes32(\n            (uint256(uint8(TradeActionType.Borrow)) << 248) |\n            (uint256(marketIndex) << 240) |\n            (uint256(fCashAmount) << 152) |\n            (uint256(maxImpliedRate) << 120)\n        );\n    }\n}"
      },
      "wrapped-fcash/interfaces/notional/INotionalV2.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-only\npragma solidity ^0.8.11;\npragma abicoder v2;\n\nimport \"../../contracts/lib/Types.sol\";\n\ninterface INotionalV2 {\n    \n    function getCurrency(uint16 currencyId)\n        external\n        view\n        returns (Token memory assetToken, Token memory underlyingToken);\n\n    function getCashGroup(uint16 currencyId) external view returns (CashGroupSettings memory);\n\n    function getAccountContext(address account) external view returns (AccountContext memory);\n\n    function getAccountPortfolio(address account) external view returns (PortfolioAsset[] memory);\n\n    function getAccountBalance(uint16 currencyId, address account)\n        external\n        view\n        returns (\n            int256 cashBalance,\n            int256 nTokenBalance,\n            uint256 lastClaimTime\n        );\n\n   function getfCashLendFromDeposit(\n        uint16 currencyId,\n        uint256 depositAmountExternal,\n        uint256 maturity,\n        uint32 minLendRate,\n        uint256 blockTime,\n        bool useUnderlying\n    ) external view returns (\n        uint88 fCashAmount,\n        uint8 marketIndex,\n        bytes32 encodedTrade\n    );\n\n    function getDepositFromfCashLend(\n        uint16 currencyId,\n        uint256 fCashAmount,\n        uint256 maturity,\n        uint32 minLendRate,\n        uint256 blockTime\n    ) external view returns (\n        uint256 depositAmountUnderlying,\n        uint256 depositAmountAsset,\n        uint8 marketIndex,\n        bytes32 encodedTrade\n    );\n\n    function getPrincipalFromfCashBorrow(\n        uint16 currencyId,\n        uint256 fCashBorrow,\n        uint256 maturity,\n        uint32 maxBorrowRate,\n        uint256 blockTime\n    ) external view returns (\n        uint256 borrowAmountUnderlying,\n        uint256 borrowAmountAsset,\n        uint8 marketIndex,\n        bytes32 encodedTrade\n    );    \n\n    function getfCashBorrowFromPrincipal(\n        uint16 currencyId,\n        uint256 borrowedAmountExternal,\n        uint256 maturity,\n        uint32 maxBorrowRate,\n        uint256 blockTime,\n        bool useUnderlying\n    ) external view returns (\n        uint88 fCashDebt,\n        uint8 marketIndex,\n        bytes32 encodedTrade\n    );\n\n    function convertCashBalanceToExternal(\n        uint16 currencyId,\n        int256 cashBalanceInternal,\n        bool useUnderlying\n    ) external view returns (int256);\n\n    function getPresentfCashValue(\n        uint16 currencyId,\n        uint256 maturity,\n        int256 notional,\n        uint256 blockTime,\n        bool riskAdjusted\n    ) external view returns (int256 presentValue);\n    \n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes calldata data\n    ) external payable;\n\n    function settleAccount(address account) external;\n\n    function withdraw(\n        uint16 currencyId,\n        uint88 amountInternalPrecision,\n        bool redeemToUnderlying\n    ) external returns (uint256);\n\n    function batchBalanceAndTradeAction(address account, BalanceActionWithTrades[] calldata actions)\n        external\n        payable;\n\n    function batchLend(address account, BatchLend[] calldata actions) external;\n\n}\n"
      },
      "wrapped-fcash/interfaces/notional/IWrappedfCash.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-only\npragma solidity ^0.8.0;\n\nimport {TokenType} from \"../../contracts/lib/Types.sol\";\nimport \"../IERC4626.sol\";\nimport \"openzeppelin-contracts-V4/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-contracts-V4/token/ERC777/IERC777.sol\";\n\ninterface IWrappedfCash {\n    struct RedeemOpts {\n        bool redeemToUnderlying;\n        bool transferfCash;\n        address receiver;\n        // Zero signifies no maximum slippage\n        uint32 maxImpliedRate;\n    }\n    function initialize(uint16 currencyId, uint40 maturity) external;\n\n    /// @notice Mints wrapped fCash ERC20 tokens\n    function mintViaAsset(\n        uint256 depositAmountExternal,\n        uint88 fCashAmount,\n        address receiver,\n        uint32 minImpliedRate\n    ) external;\n\n    function mintViaUnderlying(\n        uint256 depositAmountExternal,\n        uint88 fCashAmount,\n        address receiver,\n        uint32 minImpliedRate\n    ) external;\n\n    function redeem(uint256 amount, RedeemOpts memory data) external;\n    function redeemToAsset(uint256 amount, address receiver, uint32 maxImpliedRate) external;\n    function redeemToUnderlying(uint256 amount, address receiver, uint32 maxImpliedRate) external;\n\n    /// @notice Returns the underlying fCash ID of the token\n    function getfCashId() external view returns (uint256);\n\n    /// @notice Returns the underlying fCash maturity of the token\n    function getMaturity() external view returns (uint40 maturity);\n\n    /// @notice True if the fCash has matured, assets mature exactly on the block time\n    function hasMatured() external view returns (bool);\n\n    /// @notice Returns the underlying fCash currency\n    function getCurrencyId() external view returns (uint16 currencyId);\n\n    /// @notice Returns the components of the fCash idd\n    function getDecodedID() external view returns (uint16 currencyId, uint40 maturity);\n\n    /// @notice Returns the current market index for this fCash asset. If this returns\n    /// zero that means it is idiosyncratic and cannot be traded.\n    function getMarketIndex() external view returns (uint8);\n\n    /// @notice Returns the token and precision of the token that this token settles\n    /// to. For example, fUSDC will return the USDC token address and 1e6. The zero\n    /// address will represent ETH.\n    function getUnderlyingToken() external view returns (IERC20 underlyingToken, int256 underlyingPrecision);\n\n    /// @notice Returns the asset token which the fCash settles to. This will be an interest\n    /// bearing token like a cToken or aToken.\n    function getAssetToken() external view returns (IERC20 assetToken, int256 assetPrecision, TokenType tokenType);\n}\n\n\ninterface IWrappedfCashComplete is IWrappedfCash, IERC777, IERC4626 {} "
      },
      "wrapped-fcash/interfaces/IWETH9.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity =0.8.11;\n\ninterface IWETH9 {\n    function deposit() external payable;\n\n    function withdraw(uint256 wad) external;\n\n    function transfer(address dst, uint wad) external returns (bool);\n}\n"
      },
      "openzeppelin-contracts-V4/utils/Strings.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _HEX_SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC777/ERC777.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC777Upgradeable.sol\";\nimport \"./IERC777RecipientUpgradeable.sol\";\nimport \"./IERC777SenderUpgradeable.sol\";\nimport \"../ERC20/IERC20Upgradeable.sol\";\nimport \"../../utils/AddressUpgradeable.sol\";\nimport \"../../utils/ContextUpgradeable.sol\";\nimport \"../../utils/introspection/IERC1820RegistryUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC777} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * Support for ERC20 is included in this contract, as specified by the EIP: both\n * the ERC777 and ERC20 interfaces can be safely used when interacting with it.\n * Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token\n * movements.\n *\n * Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there\n * are no special restrictions in the amount of tokens that created, moved, or\n * destroyed. This makes integration with ERC20 applications seamless.\n */\ncontract ERC777Upgradeable is Initializable, ContextUpgradeable, IERC777Upgradeable, IERC20Upgradeable {\n    using AddressUpgradeable for address;\n\n    IERC1820RegistryUpgradeable internal constant _ERC1820_REGISTRY = IERC1820RegistryUpgradeable(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24);\n\n    mapping(address => uint256) private _balances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    bytes32 private constant _TOKENS_SENDER_INTERFACE_HASH = keccak256(\"ERC777TokensSender\");\n    bytes32 private constant _TOKENS_RECIPIENT_INTERFACE_HASH = keccak256(\"ERC777TokensRecipient\");\n\n    // This isn't ever read from - it's only used to respond to the defaultOperators query.\n    address[] private _defaultOperatorsArray;\n\n    // Immutable, but accounts may revoke them (tracked in __revokedDefaultOperators).\n    mapping(address => bool) private _defaultOperators;\n\n    // For each account, a mapping of its operators and revoked default operators.\n    mapping(address => mapping(address => bool)) private _operators;\n    mapping(address => mapping(address => bool)) private _revokedDefaultOperators;\n\n    // ERC20-allowances\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    /**\n     * @dev `defaultOperators` may be an empty array.\n     */\n    function __ERC777_init(\n        string memory name_,\n        string memory symbol_,\n        address[] memory defaultOperators_\n    ) internal onlyInitializing {\n        __ERC777_init_unchained(name_, symbol_, defaultOperators_);\n    }\n\n    function __ERC777_init_unchained(\n        string memory name_,\n        string memory symbol_,\n        address[] memory defaultOperators_\n    ) internal onlyInitializing {\n        _name = name_;\n        _symbol = symbol_;\n\n        _defaultOperatorsArray = defaultOperators_;\n        for (uint256 i = 0; i < defaultOperators_.length; i++) {\n            _defaultOperators[defaultOperators_[i]] = true;\n        }\n\n        // register interfaces\n        _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256(\"ERC777Token\"), address(this));\n        _ERC1820_REGISTRY.setInterfaceImplementer(address(this), keccak256(\"ERC20Token\"), address(this));\n    }\n\n    /**\n     * @dev See {IERC777-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC777-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {ERC20-decimals}.\n     *\n     * Always returns 18, as per the\n     * [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility).\n     */\n    function decimals() public pure virtual returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC777-granularity}.\n     *\n     * This implementation always returns `1`.\n     */\n    function granularity() public view virtual override returns (uint256) {\n        return 1;\n    }\n\n    /**\n     * @dev See {IERC777-totalSupply}.\n     */\n    function totalSupply() public view virtual override(IERC20Upgradeable, IERC777Upgradeable) returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev Returns the amount of tokens owned by an account (`tokenHolder`).\n     */\n    function balanceOf(address tokenHolder) public view virtual override(IERC20Upgradeable, IERC777Upgradeable) returns (uint256) {\n        return _balances[tokenHolder];\n    }\n\n    /**\n     * @dev See {IERC777-send}.\n     *\n     * Also emits a {IERC20-Transfer} event for ERC20 compatibility.\n     */\n    function send(\n        address recipient,\n        uint256 amount,\n        bytes memory data\n    ) public virtual override {\n        _send(_msgSender(), recipient, amount, data, \"\", true);\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient}\n     * interface if it is a contract.\n     *\n     * Also emits a {Sent} event.\n     */\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n        require(recipient != address(0), \"ERC777: transfer to the zero address\");\n\n        address from = _msgSender();\n\n        _callTokensToSend(from, from, recipient, amount, \"\", \"\");\n\n        _move(from, from, recipient, amount, \"\", \"\");\n\n        _callTokensReceived(from, from, recipient, amount, \"\", \"\", false);\n\n        return true;\n    }\n\n    /**\n     * @dev See {IERC777-burn}.\n     *\n     * Also emits a {IERC20-Transfer} event for ERC20 compatibility.\n     */\n    function burn(uint256 amount, bytes memory data) public virtual override {\n        _burn(_msgSender(), amount, data, \"\");\n    }\n\n    /**\n     * @dev See {IERC777-isOperatorFor}.\n     */\n    function isOperatorFor(address operator, address tokenHolder) public view virtual override returns (bool) {\n        return\n            operator == tokenHolder ||\n            (_defaultOperators[operator] && !_revokedDefaultOperators[tokenHolder][operator]) ||\n            _operators[tokenHolder][operator];\n    }\n\n    /**\n     * @dev See {IERC777-authorizeOperator}.\n     */\n    function authorizeOperator(address operator) public virtual override {\n        require(_msgSender() != operator, \"ERC777: authorizing self as operator\");\n\n        if (_defaultOperators[operator]) {\n            delete _revokedDefaultOperators[_msgSender()][operator];\n        } else {\n            _operators[_msgSender()][operator] = true;\n        }\n\n        emit AuthorizedOperator(operator, _msgSender());\n    }\n\n    /**\n     * @dev See {IERC777-revokeOperator}.\n     */\n    function revokeOperator(address operator) public virtual override {\n        require(operator != _msgSender(), \"ERC777: revoking self as operator\");\n\n        if (_defaultOperators[operator]) {\n            _revokedDefaultOperators[_msgSender()][operator] = true;\n        } else {\n            delete _operators[_msgSender()][operator];\n        }\n\n        emit RevokedOperator(operator, _msgSender());\n    }\n\n    /**\n     * @dev See {IERC777-defaultOperators}.\n     */\n    function defaultOperators() public view virtual override returns (address[] memory) {\n        return _defaultOperatorsArray;\n    }\n\n    /**\n     * @dev See {IERC777-operatorSend}.\n     *\n     * Emits {Sent} and {IERC20-Transfer} events.\n     */\n    function operatorSend(\n        address sender,\n        address recipient,\n        uint256 amount,\n        bytes memory data,\n        bytes memory operatorData\n    ) public virtual override {\n        require(isOperatorFor(_msgSender(), sender), \"ERC777: caller is not an operator for holder\");\n        _send(sender, recipient, amount, data, operatorData, true);\n    }\n\n    /**\n     * @dev See {IERC777-operatorBurn}.\n     *\n     * Emits {Burned} and {IERC20-Transfer} events.\n     */\n    function operatorBurn(\n        address account,\n        uint256 amount,\n        bytes memory data,\n        bytes memory operatorData\n    ) public virtual override {\n        require(isOperatorFor(_msgSender(), account), \"ERC777: caller is not an operator for holder\");\n        _burn(account, amount, data, operatorData);\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     *\n     * Note that operator and allowance concepts are orthogonal: operators may\n     * not have allowance, and accounts with allowance may not be operators\n     * themselves.\n     */\n    function allowance(address holder, address spender) public view virtual override returns (uint256) {\n        return _allowances[holder][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Note that accounts cannot have allowance issued by their operators.\n     */\n    function approve(address spender, uint256 value) public virtual override returns (bool) {\n        address holder = _msgSender();\n        _approve(holder, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Note that operator and allowance concepts are orthogonal: operators cannot\n     * call `transferFrom` (unless they have allowance), and accounts with\n     * allowance cannot call `operatorSend` (unless they are operators).\n     *\n     * Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events.\n     */\n    function transferFrom(\n        address holder,\n        address recipient,\n        uint256 amount\n    ) public virtual override returns (bool) {\n        require(recipient != address(0), \"ERC777: transfer to the zero address\");\n        require(holder != address(0), \"ERC777: transfer from the zero address\");\n\n        address spender = _msgSender();\n\n        _callTokensToSend(spender, holder, recipient, amount, \"\", \"\");\n\n        _spendAllowance(holder, spender, amount);\n\n        _move(spender, holder, recipient, amount, \"\", \"\");\n\n        _callTokensReceived(spender, holder, recipient, amount, \"\", \"\", false);\n\n        return true;\n    }\n\n    /**\n     * @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * If a send hook is registered for `account`, the corresponding function\n     * will be called with `operator`, `data` and `operatorData`.\n     *\n     * See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits {Minted} and {IERC20-Transfer} events.\n     *\n     * Requirements\n     *\n     * - `account` cannot be the zero address.\n     * - if `account` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function _mint(\n        address account,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData\n    ) internal virtual {\n        _mint(account, amount, userData, operatorData, true);\n    }\n\n    /**\n     * @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * If `requireReceptionAck` is set to true, and if a send hook is\n     * registered for `account`, the corresponding function will be called with\n     * `operator`, `data` and `operatorData`.\n     *\n     * See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits {Minted} and {IERC20-Transfer} events.\n     *\n     * Requirements\n     *\n     * - `account` cannot be the zero address.\n     * - if `account` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function _mint(\n        address account,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData,\n        bool requireReceptionAck\n    ) internal virtual {\n        require(account != address(0), \"ERC777: mint to the zero address\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, address(0), account, amount);\n\n        // Update state variables\n        _totalSupply += amount;\n        _balances[account] += amount;\n\n        _callTokensReceived(operator, address(0), account, amount, userData, operatorData, requireReceptionAck);\n\n        emit Minted(operator, account, amount, userData, operatorData);\n        emit Transfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Send tokens\n     * @param from address token holder address\n     * @param to address recipient address\n     * @param amount uint256 amount of tokens to transfer\n     * @param userData bytes extra information provided by the token holder (if any)\n     * @param operatorData bytes extra information provided by the operator (if any)\n     * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient\n     */\n    function _send(\n        address from,\n        address to,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData,\n        bool requireReceptionAck\n    ) internal virtual {\n        require(from != address(0), \"ERC777: send from the zero address\");\n        require(to != address(0), \"ERC777: send to the zero address\");\n\n        address operator = _msgSender();\n\n        _callTokensToSend(operator, from, to, amount, userData, operatorData);\n\n        _move(operator, from, to, amount, userData, operatorData);\n\n        _callTokensReceived(operator, from, to, amount, userData, operatorData, requireReceptionAck);\n    }\n\n    /**\n     * @dev Burn tokens\n     * @param from address token holder address\n     * @param amount uint256 amount of tokens to burn\n     * @param data bytes extra information provided by the token holder\n     * @param operatorData bytes extra information provided by the operator (if any)\n     */\n    function _burn(\n        address from,\n        uint256 amount,\n        bytes memory data,\n        bytes memory operatorData\n    ) internal virtual {\n        require(from != address(0), \"ERC777: burn from the zero address\");\n\n        address operator = _msgSender();\n\n        _callTokensToSend(operator, from, address(0), amount, data, operatorData);\n\n        _beforeTokenTransfer(operator, from, address(0), amount);\n\n        // Update state variables\n        uint256 fromBalance = _balances[from];\n        require(fromBalance >= amount, \"ERC777: burn amount exceeds balance\");\n        unchecked {\n            _balances[from] = fromBalance - amount;\n        }\n        _totalSupply -= amount;\n\n        emit Burned(operator, from, amount, data, operatorData);\n        emit Transfer(from, address(0), amount);\n    }\n\n    function _move(\n        address operator,\n        address from,\n        address to,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData\n    ) private {\n        _beforeTokenTransfer(operator, from, to, amount);\n\n        uint256 fromBalance = _balances[from];\n        require(fromBalance >= amount, \"ERC777: transfer amount exceeds balance\");\n        unchecked {\n            _balances[from] = fromBalance - amount;\n        }\n        _balances[to] += amount;\n\n        emit Sent(operator, from, to, amount, userData, operatorData);\n        emit Transfer(from, to, amount);\n    }\n\n    /**\n     * @dev See {ERC20-_approve}.\n     *\n     * Note that accounts cannot have allowance issued by their operators.\n     */\n    function _approve(\n        address holder,\n        address spender,\n        uint256 value\n    ) internal virtual {\n        require(holder != address(0), \"ERC777: approve from the zero address\");\n        require(spender != address(0), \"ERC777: approve to the zero address\");\n\n        _allowances[holder][spender] = value;\n        emit Approval(holder, spender, value);\n    }\n\n    /**\n     * @dev Call from.tokensToSend() if the interface is registered\n     * @param operator address operator requesting the transfer\n     * @param from address token holder address\n     * @param to address recipient address\n     * @param amount uint256 amount of tokens to transfer\n     * @param userData bytes extra information provided by the token holder (if any)\n     * @param operatorData bytes extra information provided by the operator (if any)\n     */\n    function _callTokensToSend(\n        address operator,\n        address from,\n        address to,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData\n    ) private {\n        address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(from, _TOKENS_SENDER_INTERFACE_HASH);\n        if (implementer != address(0)) {\n            IERC777SenderUpgradeable(implementer).tokensToSend(operator, from, to, amount, userData, operatorData);\n        }\n    }\n\n    /**\n     * @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but\n     * tokensReceived() was not registered for the recipient\n     * @param operator address operator requesting the transfer\n     * @param from address token holder address\n     * @param to address recipient address\n     * @param amount uint256 amount of tokens to transfer\n     * @param userData bytes extra information provided by the token holder (if any)\n     * @param operatorData bytes extra information provided by the operator (if any)\n     * @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient\n     */\n    function _callTokensReceived(\n        address operator,\n        address from,\n        address to,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData,\n        bool requireReceptionAck\n    ) private {\n        address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(to, _TOKENS_RECIPIENT_INTERFACE_HASH);\n        if (implementer != address(0)) {\n            IERC777RecipientUpgradeable(implementer).tokensReceived(operator, from, to, amount, userData, operatorData);\n        } else if (requireReceptionAck) {\n            require(!to.isContract(), \"ERC777: token recipient contract has no implementer for ERC777TokensRecipient\");\n        }\n    }\n\n    /**\n     * @dev Spend `amount` form the allowance of `owner` toward `spender`.\n     *\n     * Does not update the allowance amount in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Might emit an {Approval} event.\n     */\n    function _spendAllowance(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance != type(uint256).max) {\n            require(currentAllowance >= amount, \"ERC777: insufficient allowance\");\n            unchecked {\n                _approve(owner, spender, currentAllowance - amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes\n     * calls to {send}, {transfer}, {operatorSend}, minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be to transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address operator,\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[41] private __gap;\n}\n"
      },
      "wrapped-fcash/contracts/lib/Types.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @notice Different types of internal tokens\n///  - UnderlyingToken: underlying asset for a cToken (except for Ether)\n///  - cToken: Compound interest bearing token\n///  - cETH: Special handling for cETH tokens\n///  - Ether: the one and only\n///  - NonMintable: tokens that do not have an underlying (therefore not cTokens)\nenum TokenType {\n    UnderlyingToken,\n    cToken,\n    cETH,\n    Ether,\n    NonMintable\n}\n\n/// @notice Specifies the different trade action types in the system. Each trade action type is\n/// encoded in a tightly packed bytes32 object. Trade action type is the first big endian byte of the\n/// 32 byte trade action object. The schemas for each trade action type are defined below.\nenum TradeActionType {\n    // (uint8 TradeActionType, uint8 MarketIndex, uint88 fCashAmount, uint32 minImpliedRate, uint120 unused)\n    Lend,\n    // (uint8 TradeActionType, uint8 MarketIndex, uint88 fCashAmount, uint32 maxImpliedRate, uint120 unused)\n    Borrow,\n    // (uint8 TradeActionType, uint8 MarketIndex, uint88 assetCashAmount, uint32 minImpliedRate, uint32 maxImpliedRate, uint88 unused)\n    AddLiquidity,\n    // (uint8 TradeActionType, uint8 MarketIndex, uint88 tokenAmount, uint32 minImpliedRate, uint32 maxImpliedRate, uint88 unused)\n    RemoveLiquidity,\n    // (uint8 TradeActionType, uint32 Maturity, int88 fCashResidualAmount, uint128 unused)\n    PurchaseNTokenResidual,\n    // (uint8 TradeActionType, address CounterpartyAddress, int88 fCashAmountToSettle)\n    SettleCashDebt\n}\n\n/// @notice Specifies different deposit actions that can occur during BalanceAction or BalanceActionWithTrades\nenum DepositActionType {\n    // No deposit action\n    None,\n    // Deposit asset cash, depositActionAmount is specified in asset cash external precision\n    DepositAsset,\n    // Deposit underlying tokens that are mintable to asset cash, depositActionAmount is specified in underlying token\n    // external precision\n    DepositUnderlying,\n    // Deposits specified asset cash external precision amount into an nToken and mints the corresponding amount of\n    // nTokens into the account\n    DepositAssetAndMintNToken,\n    // Deposits specified underlying in external precision, mints asset cash, and uses that asset cash to mint nTokens\n    DepositUnderlyingAndMintNToken,\n    // Redeems an nToken balance to asset cash. depositActionAmount is specified in nToken precision. Considered a deposit action\n    // because it deposits asset cash into an account. If there are fCash residuals that cannot be sold off, will revert.\n    RedeemNToken,\n    // Converts specified amount of asset cash balance already in Notional to nTokens. depositActionAmount is specified in\n    // Notional internal 8 decimal precision.\n    ConvertCashToNToken\n}\n\n/// @notice Used internally for PortfolioHandler state\nenum AssetStorageState {\n    NoChange,\n    Update,\n    Delete\n}\n\n/// @notice Defines a batch lending action\nstruct BatchLend {\n    uint16 currencyId;\n    // True if the contract should try to transfer underlying tokens instead of asset tokens\n    bool depositUnderlying;\n    // Array of tightly packed 32 byte objects that represent trades. See TradeActionType documentation\n    bytes32[] trades;\n}\n\n/// @notice Defines a balance action with a set of trades to do as well\nstruct BalanceActionWithTrades {\n    DepositActionType actionType;\n    uint16 currencyId;\n    uint256 depositActionAmount;\n    uint256 withdrawAmountInternalPrecision;\n    bool withdrawEntireCashBalance;\n    bool redeemToUnderlying;\n    // Array of tightly packed 32 byte objects that represent trades. See TradeActionType documentation\n    bytes32[] trades;\n}\n\n/// @notice Internal object that represents a token\nstruct Token {\n    address tokenAddress;\n    bool hasTransferFee;\n    int256 decimals;\n    TokenType tokenType;\n    uint256 maxCollateralBalance;\n}\n\nstruct PortfolioAsset {\n    // Asset currency id\n    uint256 currencyId;\n    uint256 maturity;\n    // Asset type, fCash or liquidity token.\n    uint256 assetType;\n    // fCash amount or liquidity token amount\n    int256 notional;\n    // Used for managing portfolio asset state\n    uint256 storageSlot;\n    // The state of the asset for when it is written to storage\n    AssetStorageState storageState;\n}\n\n/// @dev Governance parameters for a cash group, total storage is 9 bytes + 7 bytes for liquidity token haircuts\n/// and 7 bytes for rate scalars, total of 23 bytes. Note that this is stored packed in the storage slot so there\n/// are no indexes stored for liquidityTokenHaircuts or rateScalars, maxMarketIndex is used instead to determine the\n/// length.\nstruct CashGroupSettings {\n    // Index of the AMMs on chain that will be made available. Idiosyncratic fCash\n    // that is dated less than the longest AMM will be tradable.\n    uint8 maxMarketIndex;\n    // Time window in minutes that the rate oracle will be averaged over\n    uint8 rateOracleTimeWindowMin;\n    // Total fees per trade, specified in BPS\n    uint8 totalFeeBPS;\n    // Share of the fees given to the protocol, denominated in percentage\n    uint8 reserveFeeShare;\n    // Debt buffer specified in 5 BPS increments\n    uint8 debtBuffer5BPS;\n    // fCash haircut specified in 5 BPS increments\n    uint8 fCashHaircut5BPS;\n    // If an account has a negative cash balance, it can be settled by incurring debt at the 3 month market. This\n    // is the basis points for the penalty rate that will be added the current 3 month oracle rate.\n    uint8 settlementPenaltyRate5BPS;\n    // If an account has fCash that is being liquidated, this is the discount that the liquidator can purchase it for\n    uint8 liquidationfCashHaircut5BPS;\n    // If an account has fCash that is being liquidated, this is the discount that the liquidator can purchase it for\n    uint8 liquidationDebtBuffer5BPS;\n    // Liquidity token haircut applied to cash claims, specified as a percentage between 0 and 100\n    uint8[] liquidityTokenHaircuts;\n    // Rate scalar used to determine the slippage of the market\n    uint8[] rateScalars;\n}\n\n/// @dev Holds account level context information used to determine settlement and\n/// free collateral actions. Total storage is 28 bytes\nstruct AccountContext {\n    // Used to check when settlement must be triggered on an account\n    uint40 nextSettleTime;\n    // For lenders that never incur debt, we use this flag to skip the free collateral check.\n    bytes1 hasDebt;\n    // Length of the account's asset array\n    uint8 assetArrayLength;\n    // If this account has bitmaps set, this is the corresponding currency id\n    uint16 bitmapCurrencyId;\n    // 9 total active currencies possible (2 bytes each)\n    bytes18 activeCurrencies;\n}\n\n/// @dev Used in view methods to return account balances in a developer friendly manner\nstruct AccountBalance {\n    uint256 currencyId;\n    int256 cashBalance;\n    int256 nTokenBalance;\n    uint256 lastClaimTime;\n    uint256 lastClaimIntegralSupply;\n}\n\n/// @dev Asset rate used to convert between underlying cash and asset cash\nstruct AssetRateParameters {\n    // Address of the asset rate oracle\n    address rateOracle;\n    // The exchange rate from base to quote (if invert is required it is already done)\n    int256 rate;\n    // The decimals of the underlying, the rate converts to the underlying decimals\n    int256 underlyingDecimals;\n}\n"
      },
      "wrapped-fcash/interfaces/IERC4626.sol": {
        "content": "pragma solidity ^0.8.0;\n\ninterface IERC4626 {\n    event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares);\n\n    event Withdraw(\n        address indexed caller,\n        address indexed receiver,\n        address indexed owner,\n        uint256 assets,\n        uint256 shares\n    );\n\n    /**\n     * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n     *\n     * - MUST be an ERC-20 token contract.\n     * - MUST NOT revert.\n     */\n    function asset() external view returns (address assetTokenAddress);\n\n    /**\n     * @dev Returns the total amount of the underlying asset that is “managed” by Vault.\n     *\n     * - SHOULD include any compounding that occurs from yield.\n     * - MUST be inclusive of any fees that are charged against assets in the Vault.\n     * - MUST NOT revert.\n     */\n    function totalAssets() external view returns (uint256 totalManagedAssets);\n\n    /**\n     * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n     * scenario where all the conditions are met.\n     *\n     * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n     * - MUST NOT show any variations depending on the caller.\n     * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n     * - MUST NOT revert.\n     *\n     * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n     * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n     * from.\n     */\n    function convertToShares(uint256 assets) external view returns (uint256 shares);\n\n    /**\n     * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n     * scenario where all the conditions are met.\n     *\n     * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n     * - MUST NOT show any variations depending on the caller.\n     * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n     * - MUST NOT revert.\n     *\n     * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n     * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n     * from.\n     */\n    function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n    /**\n     * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n     * through a deposit call.\n     *\n     * - MUST return a limited value if receiver is subject to some deposit limit.\n     * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n     * - MUST NOT revert.\n     */\n    function maxDeposit(address receiver) external view returns (uint256 maxAssets);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n     * current on-chain conditions.\n     *\n     * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n     *   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n     *   in the same transaction.\n     * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n     *   deposit would be accepted, regardless if the user has enough tokens approved, etc.\n     * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n     */\n    function previewDeposit(uint256 assets) external view returns (uint256 shares);\n\n    /**\n     * @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.\n     *\n     * - MUST emit the Deposit event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n     *   deposit execution, and are accounted for during deposit.\n     * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n     *   approving enough underlying tokens to the Vault contract, etc).\n     *\n     * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.\n     */\n    function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n    /**\n     * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n     * - MUST return a limited value if receiver is subject to some mint limit.\n     * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n     * - MUST NOT revert.\n     */\n    function maxMint(address receiver) external view returns (uint256 maxShares);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n     * current on-chain conditions.\n     *\n     * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n     *   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n     *   same transaction.\n     * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n     *   would be accepted, regardless if the user has enough tokens approved, etc.\n     * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by minting.\n     */\n    function previewMint(uint256 shares) external view returns (uint256 assets);\n\n    /**\n     * @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.\n     *\n     * - MUST emit the Deposit event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n     *   execution, and are accounted for during mint.\n     * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n     *   approving enough underlying tokens to the Vault contract, etc).\n     *\n     * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.\n     */\n    function mint(uint256 shares, address receiver) external returns (uint256 assets);\n\n    /**\n     * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n     * Vault, through a withdraw call.\n     *\n     * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n     * - MUST NOT revert.\n     */\n    function maxWithdraw(address owner) external view returns (uint256 maxAssets);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n     * given current on-chain conditions.\n     *\n     * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n     *   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n     *   called\n     *   in the same transaction.\n     * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n     *   the withdrawal would be accepted, regardless if the user has enough shares, etc.\n     * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n     */\n    function previewWithdraw(uint256 assets) external view returns (uint256 shares);\n\n    /**\n     * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n     *\n     * - MUST emit the Withdraw event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n     *   withdraw execution, and are accounted for during withdraw.\n     * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n     *   not having enough shares, etc).\n     *\n     * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n     * Those methods should be performed separately.\n     */\n    function withdraw(\n        uint256 assets,\n        address receiver,\n        address owner\n    ) external returns (uint256 shares);\n\n    /**\n     * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n     * through a redeem call.\n     *\n     * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n     * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n     * - MUST NOT revert.\n     */\n    function maxRedeem(address owner) external view returns (uint256 maxShares);\n\n    /**\n     * @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,\n     * given current on-chain conditions.\n     *\n     * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n     *   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n     *   same transaction.\n     * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n     *   redemption would be accepted, regardless if the user has enough shares, etc.\n     * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n     * - MUST NOT revert.\n     *\n     * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n     * share price or some other type of condition, meaning the depositor will lose assets by redeeming.\n     */\n    function previewRedeem(uint256 shares) external view returns (uint256 assets);\n\n    /**\n     * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n     *\n     * - MUST emit the Withdraw event.\n     * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n     *   redeem execution, and are accounted for during redeem.\n     * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n     *   not having enough shares, etc).\n     *\n     * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n     * Those methods should be performed separately.\n     */\n    function redeem(\n        uint256 shares,\n        address receiver,\n        address owner\n    ) external returns (uint256 assets);\n}"
      },
      "openzeppelin-contracts-V4/token/ERC777/IERC777.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC777/IERC777.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC777Token standard as defined in the EIP.\n *\n * This contract uses the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n * token holders and recipients react to token movements by using setting implementers\n * for the associated interfaces in said registry. See {IERC1820Registry} and\n * {ERC1820Implementer}.\n */\ninterface IERC777 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the smallest part of the token that is not divisible. This\n     * means all token operations (creation, movement and destruction) must have\n     * amounts that are a multiple of this number.\n     *\n     * For most token contracts, this value will equal 1.\n     */\n    function granularity() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by an account (`owner`).\n     */\n    function balanceOf(address owner) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * If send or receive hooks are registered for the caller and `recipient`,\n     * the corresponding functions will be called with `data` and empty\n     * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits a {Sent} event.\n     *\n     * Requirements\n     *\n     * - the caller must have at least `amount` tokens.\n     * - `recipient` cannot be the zero address.\n     * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function send(\n        address recipient,\n        uint256 amount,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev Destroys `amount` tokens from the caller's account, reducing the\n     * total supply.\n     *\n     * If a send hook is registered for the caller, the corresponding function\n     * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n     *\n     * Emits a {Burned} event.\n     *\n     * Requirements\n     *\n     * - the caller must have at least `amount` tokens.\n     */\n    function burn(uint256 amount, bytes calldata data) external;\n\n    /**\n     * @dev Returns true if an account is an operator of `tokenHolder`.\n     * Operators can send and burn tokens on behalf of their owners. All\n     * accounts are their own operator.\n     *\n     * See {operatorSend} and {operatorBurn}.\n     */\n    function isOperatorFor(address operator, address tokenHolder) external view returns (bool);\n\n    /**\n     * @dev Make an account an operator of the caller.\n     *\n     * See {isOperatorFor}.\n     *\n     * Emits an {AuthorizedOperator} event.\n     *\n     * Requirements\n     *\n     * - `operator` cannot be calling address.\n     */\n    function authorizeOperator(address operator) external;\n\n    /**\n     * @dev Revoke an account's operator status for the caller.\n     *\n     * See {isOperatorFor} and {defaultOperators}.\n     *\n     * Emits a {RevokedOperator} event.\n     *\n     * Requirements\n     *\n     * - `operator` cannot be calling address.\n     */\n    function revokeOperator(address operator) external;\n\n    /**\n     * @dev Returns the list of default operators. These accounts are operators\n     * for all token holders, even if {authorizeOperator} was never called on\n     * them.\n     *\n     * This list is immutable, but individual holders may revoke these via\n     * {revokeOperator}, in which case {isOperatorFor} will return false.\n     */\n    function defaultOperators() external view returns (address[] memory);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n     * be an operator of `sender`.\n     *\n     * If send or receive hooks are registered for `sender` and `recipient`,\n     * the corresponding functions will be called with `data` and\n     * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits a {Sent} event.\n     *\n     * Requirements\n     *\n     * - `sender` cannot be the zero address.\n     * - `sender` must have at least `amount` tokens.\n     * - the caller must be an operator for `sender`.\n     * - `recipient` cannot be the zero address.\n     * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function operatorSend(\n        address sender,\n        address recipient,\n        uint256 amount,\n        bytes calldata data,\n        bytes calldata operatorData\n    ) external;\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n     * The caller must be an operator of `account`.\n     *\n     * If a send hook is registered for `account`, the corresponding function\n     * will be called with `data` and `operatorData`. See {IERC777Sender}.\n     *\n     * Emits a {Burned} event.\n     *\n     * Requirements\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     * - the caller must be an operator for `account`.\n     */\n    function operatorBurn(\n        address account,\n        uint256 amount,\n        bytes calldata data,\n        bytes calldata operatorData\n    ) external;\n\n    event Sent(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256 amount,\n        bytes data,\n        bytes operatorData\n    );\n\n    event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);\n\n    event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);\n\n    event AuthorizedOperator(address indexed operator, address indexed tokenHolder);\n\n    event RevokedOperator(address indexed operator, address indexed tokenHolder);\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC777/IERC777.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC777Token standard as defined in the EIP.\n *\n * This contract uses the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n * token holders and recipients react to token movements by using setting implementers\n * for the associated interfaces in said registry. See {IERC1820Registry} and\n * {ERC1820Implementer}.\n */\ninterface IERC777Upgradeable {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the smallest part of the token that is not divisible. This\n     * means all token operations (creation, movement and destruction) must have\n     * amounts that are a multiple of this number.\n     *\n     * For most token contracts, this value will equal 1.\n     */\n    function granularity() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by an account (`owner`).\n     */\n    function balanceOf(address owner) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * If send or receive hooks are registered for the caller and `recipient`,\n     * the corresponding functions will be called with `data` and empty\n     * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits a {Sent} event.\n     *\n     * Requirements\n     *\n     * - the caller must have at least `amount` tokens.\n     * - `recipient` cannot be the zero address.\n     * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function send(\n        address recipient,\n        uint256 amount,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev Destroys `amount` tokens from the caller's account, reducing the\n     * total supply.\n     *\n     * If a send hook is registered for the caller, the corresponding function\n     * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n     *\n     * Emits a {Burned} event.\n     *\n     * Requirements\n     *\n     * - the caller must have at least `amount` tokens.\n     */\n    function burn(uint256 amount, bytes calldata data) external;\n\n    /**\n     * @dev Returns true if an account is an operator of `tokenHolder`.\n     * Operators can send and burn tokens on behalf of their owners. All\n     * accounts are their own operator.\n     *\n     * See {operatorSend} and {operatorBurn}.\n     */\n    function isOperatorFor(address operator, address tokenHolder) external view returns (bool);\n\n    /**\n     * @dev Make an account an operator of the caller.\n     *\n     * See {isOperatorFor}.\n     *\n     * Emits an {AuthorizedOperator} event.\n     *\n     * Requirements\n     *\n     * - `operator` cannot be calling address.\n     */\n    function authorizeOperator(address operator) external;\n\n    /**\n     * @dev Revoke an account's operator status for the caller.\n     *\n     * See {isOperatorFor} and {defaultOperators}.\n     *\n     * Emits a {RevokedOperator} event.\n     *\n     * Requirements\n     *\n     * - `operator` cannot be calling address.\n     */\n    function revokeOperator(address operator) external;\n\n    /**\n     * @dev Returns the list of default operators. These accounts are operators\n     * for all token holders, even if {authorizeOperator} was never called on\n     * them.\n     *\n     * This list is immutable, but individual holders may revoke these via\n     * {revokeOperator}, in which case {isOperatorFor} will return false.\n     */\n    function defaultOperators() external view returns (address[] memory);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n     * be an operator of `sender`.\n     *\n     * If send or receive hooks are registered for `sender` and `recipient`,\n     * the corresponding functions will be called with `data` and\n     * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n     *\n     * Emits a {Sent} event.\n     *\n     * Requirements\n     *\n     * - `sender` cannot be the zero address.\n     * - `sender` must have at least `amount` tokens.\n     * - the caller must be an operator for `sender`.\n     * - `recipient` cannot be the zero address.\n     * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n     * interface.\n     */\n    function operatorSend(\n        address sender,\n        address recipient,\n        uint256 amount,\n        bytes calldata data,\n        bytes calldata operatorData\n    ) external;\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n     * The caller must be an operator of `account`.\n     *\n     * If a send hook is registered for `account`, the corresponding function\n     * will be called with `data` and `operatorData`. See {IERC777Sender}.\n     *\n     * Emits a {Burned} event.\n     *\n     * Requirements\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     * - the caller must be an operator for `account`.\n     */\n    function operatorBurn(\n        address account,\n        uint256 amount,\n        bytes calldata data,\n        bytes calldata operatorData\n    ) external;\n\n    event Sent(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256 amount,\n        bytes data,\n        bytes operatorData\n    );\n\n    event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);\n\n    event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);\n\n    event AuthorizedOperator(address indexed operator, address indexed tokenHolder);\n\n    event RevokedOperator(address indexed operator, address indexed tokenHolder);\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777RecipientUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC777/IERC777Recipient.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC777TokensRecipient standard as defined in the EIP.\n *\n * Accounts can be notified of {IERC777} tokens being sent to them by having a\n * contract implement this interface (contract holders can be their own\n * implementer) and registering it on the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n *\n * See {IERC1820Registry} and {ERC1820Implementer}.\n */\ninterface IERC777RecipientUpgradeable {\n    /**\n     * @dev Called by an {IERC777} token contract whenever tokens are being\n     * moved or created into a registered account (`to`). The type of operation\n     * is conveyed by `from` being the zero address or not.\n     *\n     * This call occurs _after_ the token contract's state is updated, so\n     * {IERC777-balanceOf}, etc., can be used to query the post-operation state.\n     *\n     * This function may revert to prevent the operation from being executed.\n     */\n    function tokensReceived(\n        address operator,\n        address from,\n        address to,\n        uint256 amount,\n        bytes calldata userData,\n        bytes calldata operatorData\n    ) external;\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777SenderUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC777/IERC777Sender.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC777TokensSender standard as defined in the EIP.\n *\n * {IERC777} Token holders can be notified of operations performed on their\n * tokens by having a contract implement this interface (contract holders can be\n * their own implementer) and registering it on the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n *\n * See {IERC1820Registry} and {ERC1820Implementer}.\n */\ninterface IERC777SenderUpgradeable {\n    /**\n     * @dev Called by an {IERC777} token contract whenever a registered holder's\n     * (`from`) tokens are about to be moved or destroyed. The type of operation\n     * is conveyed by `to` being the zero address or not.\n     *\n     * This call occurs _before_ the token contract's state is updated, so\n     * {IERC777-balanceOf}, etc., can be used to query the pre-operation state.\n     *\n     * This function may revert to prevent the operation from being executed.\n     */\n    function tokensToSend(\n        address operator,\n        address from,\n        address to,\n        uint256 amount,\n        bytes calldata userData,\n        bytes calldata operatorData\n    ) external;\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20Upgradeable {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/utils/AddressUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/utils/ContextUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/utils/introspection/IERC1820RegistryUpgradeable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC1820Registry.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the global ERC1820 Registry, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register\n * implementers for interfaces in this registry, as well as query support.\n *\n * Implementers may be shared by multiple accounts, and can also implement more\n * than a single interface for each account. Contracts can implement interfaces\n * for themselves, but externally-owned accounts (EOA) must delegate this to a\n * contract.\n *\n * {IERC165} interfaces can also be queried via the registry.\n *\n * For an in-depth explanation and source code analysis, see the EIP text.\n */\ninterface IERC1820RegistryUpgradeable {\n    /**\n     * @dev Sets `newManager` as the manager for `account`. A manager of an\n     * account is able to set interface implementers for it.\n     *\n     * By default, each account is its own manager. Passing a value of `0x0` in\n     * `newManager` will reset the manager to this initial state.\n     *\n     * Emits a {ManagerChanged} event.\n     *\n     * Requirements:\n     *\n     * - the caller must be the current manager for `account`.\n     */\n    function setManager(address account, address newManager) external;\n\n    /**\n     * @dev Returns the manager for `account`.\n     *\n     * See {setManager}.\n     */\n    function getManager(address account) external view returns (address);\n\n    /**\n     * @dev Sets the `implementer` contract as ``account``'s implementer for\n     * `interfaceHash`.\n     *\n     * `account` being the zero address is an alias for the caller's address.\n     * The zero address can also be used in `implementer` to remove an old one.\n     *\n     * See {interfaceHash} to learn how these are created.\n     *\n     * Emits an {InterfaceImplementerSet} event.\n     *\n     * Requirements:\n     *\n     * - the caller must be the current manager for `account`.\n     * - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not\n     * end in 28 zeroes).\n     * - `implementer` must implement {IERC1820Implementer} and return true when\n     * queried for support, unless `implementer` is the caller. See\n     * {IERC1820Implementer-canImplementInterfaceForAddress}.\n     */\n    function setInterfaceImplementer(\n        address account,\n        bytes32 _interfaceHash,\n        address implementer\n    ) external;\n\n    /**\n     * @dev Returns the implementer of `interfaceHash` for `account`. If no such\n     * implementer is registered, returns the zero address.\n     *\n     * If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28\n     * zeroes), `account` will be queried for support of it.\n     *\n     * `account` being the zero address is an alias for the caller's address.\n     */\n    function getInterfaceImplementer(address account, bytes32 _interfaceHash) external view returns (address);\n\n    /**\n     * @dev Returns the interface hash for an `interfaceName`, as defined in the\n     * corresponding\n     * https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP].\n     */\n    function interfaceHash(string calldata interfaceName) external pure returns (bytes32);\n\n    /**\n     * @notice Updates the cache with whether the contract implements an ERC165 interface or not.\n     * @param account Address of the contract for which to update the cache.\n     * @param interfaceId ERC165 interface for which to update the cache.\n     */\n    function updateERC165Cache(address account, bytes4 interfaceId) external;\n\n    /**\n     * @notice Checks whether a contract implements an ERC165 interface or not.\n     * If the result is not cached a direct lookup on the contract address is performed.\n     * If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling\n     * {updateERC165Cache} with the contract address.\n     * @param account Address of the contract to check.\n     * @param interfaceId ERC165 interface to check.\n     * @return True if `account` implements `interfaceId`, false otherwise.\n     */\n    function implementsERC165Interface(address account, bytes4 interfaceId) external view returns (bool);\n\n    /**\n     * @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\n     * @param account Address of the contract to check.\n     * @param interfaceId ERC165 interface to check.\n     * @return True if `account` implements `interfaceId`, false otherwise.\n     */\n    function implementsERC165InterfaceNoCache(address account, bytes4 interfaceId) external view returns (bool);\n\n    event InterfaceImplementerSet(address indexed account, bytes32 indexed interfaceHash, address indexed implementer);\n\n    event ManagerChanged(address indexed account, address indexed newManager);\n}\n"
      },
      "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To initialize the implementation contract, you can either invoke the\n * initializer manually, or you can include a constructor to automatically mark it as initialized when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() initializer {}\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Indicates that the contract has been initialized.\n     */\n    bool private _initialized;\n\n    /**\n     * @dev Indicates that the contract is in the process of being initialized.\n     */\n    bool private _initializing;\n\n    /**\n     * @dev Modifier to protect an initializer function from being invoked twice.\n     */\n    modifier initializer() {\n        // If the contract is initializing we ignore whether _initialized is set in order to support multiple\n        // inheritance patterns, but we only do this in the context of a constructor, because in other contexts the\n        // contract may have been reentered.\n        require(_initializing ? _isConstructor() : !_initialized, \"Initializable: contract is already initialized\");\n\n        bool isTopLevelCall = !_initializing;\n        if (isTopLevelCall) {\n            _initializing = true;\n            _initialized = true;\n        }\n\n        _;\n\n        if (isTopLevelCall) {\n            _initializing = false;\n        }\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} modifier, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        require(_initializing, \"Initializable: contract is not initializing\");\n        _;\n    }\n\n    function _isConstructor() private view returns (bool) {\n        return !AddressUpgradeable.isContract(address(this));\n    }\n}\n"
      },
      "contracts/protocol/integration/wrap/notional/WrappedfCash.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\nimport { wfCashERC4626 } from \"wrapped-fcash/contracts/wfCashERC4626.sol\";\nimport { INotionalV2 } from \"wrapped-fcash/interfaces/notional/INotionalV2.sol\";\nimport { IWETH9 } from \"wrapped-fcash/interfaces/IWETH9.sol\";\n\ncontract WrappedfCash is wfCashERC4626 {\n    constructor(INotionalV2 _notionalProxy, IWETH9 _weth) wfCashERC4626(_notionalProxy, _weth){\n    }\n}\n"
      },
      "wrapped-fcash/contracts/wfCashERC4626.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./wfCashLogic.sol\";\nimport \"../interfaces/IERC4626.sol\";\n\ncontract wfCashERC4626 is IERC4626, wfCashLogic {\n    constructor(INotionalV2 _notional, IWETH9 _weth) wfCashLogic(_notional, _weth) {}\n\n    /** @dev See {IERC4262-asset} */\n    function asset() public view override returns (address) {\n        (IERC20 underlyingToken, bool isETH) = getToken(true);\n        return isETH ? address(WETH) : address(underlyingToken);\n    }\n\n    function _getMaturedUnderlyingExternal() private view returns (uint256) {\n        // If the fCash has matured we use the cash balance instead.\n        uint16 currencyId = getCurrencyId();\n        // We cannot settle an account in a view method, so this may fail if the account has not been settled\n        // after maturity. This can be done by anyone so it should not be an issue\n        (int256 cashBalance, /* */, /* */) = NotionalV2.getAccountBalance(currencyId, address(this));\n        int256 underlyingExternal = NotionalV2.convertCashBalanceToExternal(currencyId, cashBalance, true);\n        require(underlyingExternal > 0, \"Must Settle\");\n\n        return uint256(underlyingExternal);\n    }\n\n    /** @dev See {IERC4262-totalAssets} */\n    function totalAssets() public view override returns (uint256) {\n        if (hasMatured()) {\n            return _getMaturedUnderlyingExternal();\n        } else {\n            (/* */, int256 precision) = getUnderlyingToken();\n            // Get the present value of the fCash held by the contract, this is returned in 8 decimal precision\n            (uint16 currencyId, uint40 maturity) = getDecodedID();\n            int256 pvInternal = NotionalV2.getPresentfCashValue(\n                currencyId,\n                maturity,\n                int256(totalSupply()), // total supply cannot overflow as fCash overflows at uint88\n                block.timestamp,\n                false\n            );\n\n            int256 pvExternal = (pvInternal * precision) / Constants.INTERNAL_TOKEN_PRECISION;\n            // PV should always be >= 0 since we are lending\n            require(pvExternal >= 0);\n            return uint256(pvExternal);\n        }\n    }\n\n    /** @dev See {IERC4262-convertToShares} */\n    function convertToShares(uint256 assets) public view override returns (uint256 shares) {\n        if (hasMatured()) {\n            uint256 underlyingExternal = _getMaturedUnderlyingExternal();\n\n            // The withdraw calculation is:\n            // shares * cashBalance / totalSupply = cashBalanceShare\n            //\n            // Converting this to underlying external:\n            // shares * convert(cashBalance) / totalSupply = underlyingExternalShare\n            // shares * underlyingExternal / totalSupply = underlyingExternalShare\n            // shares * underlyingExternal / totalSupply = assets\n            // shares = (assets * totalSupply) / underlyingExternal\n            return (assets * totalSupply()) / underlyingExternal; // uint256 overflow checked above\n        } else {\n            // This is how much fCash received from depositing assets\n            (uint16 currencyId, uint40 maturity) = getDecodedID();\n            (uint256 fCashAmount, /* */, /* */) = NotionalV2.getfCashLendFromDeposit(\n                currencyId,\n                assets,\n                maturity,\n                0,\n                block.timestamp,\n                true\n            );\n\n            return fCashAmount;\n        }\n    }\n\n    /** @dev See {IERC4262-convertToAssets} */\n    function convertToAssets(uint256 shares) public view override returns (uint256 assets) {\n        if (hasMatured()) {\n            uint256 underlyingExternal = _getMaturedUnderlyingExternal();\n\n            // The withdraw calculation is:\n            // shares * cashBalance / totalSupply = cashBalanceShare\n            return (shares * underlyingExternal) / totalSupply(); // uint256 overflow checked above\n        } else {\n            // This is how much underlying it will require to lend the fCash\n            (uint16 currencyId, uint40 maturity) = getDecodedID();\n            (uint256 depositAmountUnderlying, /* */, /* */, /* */) = NotionalV2.getDepositFromfCashLend(\n                currencyId,\n                shares,\n                maturity,\n                0,\n                block.timestamp\n            );\n\n            return depositAmountUnderlying;\n        }\n    }\n\n    /** @dev See {IERC4262-maxDeposit} */\n    function maxDeposit(address) public view override returns (uint256) {\n        return hasMatured() ? 0 : type(uint256).max;\n    }\n\n    /** @dev See {IERC4262-maxMint} */\n    function maxMint(address) public view override returns (uint256) {\n        return hasMatured() ? 0 : type(uint88).max;\n    }\n\n    /** @dev See {IERC4262-maxWithdraw} */\n    function maxWithdraw(address owner) public view override returns (uint256) {\n        return convertToAssets(balanceOf(owner));\n    }\n\n    /** @dev See {IERC4262-maxRedeem} */\n    function maxRedeem(address owner) public view override returns (uint256) {\n        return balanceOf(owner);\n    }\n\n    /** @dev See {IERC4262-previewDeposit} */\n    function previewDeposit(uint256 assets) public view override returns (uint256) {\n        require(!hasMatured(), \"Matured\");\n        return convertToShares(assets);\n    }\n\n    /** @dev See {IERC4262-previewMint} */\n    function previewMint(uint256 shares) public view override returns (uint256) {\n        require(!hasMatured(), \"Matured\");\n        return convertToAssets(shares);\n    }\n\n    /** @dev See {IERC4262-previewWithdraw} */\n    function previewWithdraw(uint256 assets) public view override returns (uint256 shares) {\n        if (hasMatured()) {\n            shares = convertToShares(assets);\n        } else {\n            // If withdrawing non-matured assets, we sell them on the market (i.e. borrow)\n            (uint16 currencyId, uint40 maturity) = getDecodedID();\n            (shares, /* */, /* */) = NotionalV2.getfCashBorrowFromPrincipal(\n                currencyId,\n                assets,\n                maturity,\n                0,\n                block.timestamp,\n                true\n            );\n        }\n    }\n\n    /** @dev See {IERC4262-previewRedeem} */\n    function previewRedeem(uint256 shares) public view override returns (uint256 assets) {\n        if (hasMatured()) {\n            assets = convertToAssets(shares);\n        } else {\n            // If withdrawing non-matured assets, we sell them on the market (i.e. borrow)\n            (uint16 currencyId, uint40 maturity) = getDecodedID();\n            (assets, /* */, /* */, /* */) = NotionalV2.getPrincipalFromfCashBorrow(\n                currencyId,\n                shares,\n                maturity,\n                0,\n                block.timestamp\n            );\n        }\n    }\n\n    /** @dev See {IERC4262-deposit} */\n    function deposit(uint256 assets, address receiver) public override returns (uint256) {\n        require(assets <= maxDeposit(receiver), \"Max Deposit\");\n        uint256 shares = previewDeposit(assets);\n\n        _mintInternal(assets, _safeUint88(shares), receiver, 0, true);\n        emit Deposit(msg.sender, receiver, assets, shares);\n        return shares;\n    }\n\n    /** @dev See {IERC4262-mint} */\n    function mint(uint256 shares, address receiver) public override returns (uint256) {\n        uint256 assets = previewMint(shares);\n\n        _mintInternal(assets, _safeUint88(shares), receiver, 0, true);\n        emit Deposit(msg.sender, receiver, assets, shares);\n        return assets;\n    }\n\n    /** @dev See {IERC4262-withdraw} */\n    function withdraw(\n        uint256 assets,\n        address receiver,\n        address owner\n    ) public override returns (uint256) {\n        uint256 shares = previewWithdraw(assets);\n\n        if (msg.sender != owner) {\n            _spendAllowance(owner, msg.sender, shares);\n        }\n        _redeemInternal(shares, receiver, owner);\n\n        emit Withdraw(msg.sender, receiver, owner, assets, shares);\n\n        return shares;\n    }\n\n    /** @dev See {IERC4262-redeem} */\n    function redeem(\n        uint256 shares,\n        address receiver,\n        address owner\n    ) public override returns (uint256) {\n        // It is more accurate and gas efficient to check the balance of the\n        // receiver here than rely on the previewRedeem method.\n        uint256 balanceBefore = IERC20(asset()).balanceOf(receiver);\n\n        if (msg.sender != owner) {\n            _spendAllowance(owner, msg.sender, shares);\n        }\n        _redeemInternal(shares, receiver, owner);\n\n        uint256 balanceAfter = IERC20(asset()).balanceOf(receiver);\n        uint256 assets = balanceAfter - balanceBefore;\n        emit Withdraw(msg.sender, receiver, owner, assets, shares);\n        return assets;\n    }\n\n    function _redeemInternal(\n        uint256 shares,\n        address receiver,\n        address owner\n    ) private {\n        bytes memory userData = abi.encode(\n            RedeemOpts({\n                redeemToUnderlying: true,\n                transferfCash: false,\n                receiver: receiver,\n                maxImpliedRate: 0\n            })\n        );\n\n        // No operator data\n        _burn(owner, shares, userData, \"\");\n    }\n\n    function _safeNegInt88(uint256 x) private pure returns (int88) {\n        int256 y = -int256(x);\n        require(int256(type(int88).min) <= y);\n        return int88(y);\n    }\n}\n"
      },
      "wrapped-fcash/contracts/wfCashLogic.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\npragma experimental ABIEncoderV2;\n\nimport \"./wfCashBase.sol\";\nimport \"openzeppelin-contracts-V4/security/ReentrancyGuard.sol\";\n\n/// @dev This implementation contract is deployed as an UpgradeableBeacon. Each BeaconProxy\n/// that uses this contract as an implementation will call initialize to set its own fCash id.\n/// That identifier will represent the fCash that this ERC20 wrapper can hold.\nabstract contract wfCashLogic is wfCashBase, ReentrancyGuard {\n    using SafeERC20 for IERC20;\n    // bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))\n    bytes4 internal constant ERC1155_ACCEPTED = 0xf23a6e61;\n    // bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))\n    bytes4 internal constant ERC1155_BATCH_ACCEPTED = 0xbc197c81;\n\n    constructor(INotionalV2 _notional, IWETH9 _weth) wfCashBase(_notional, _weth) {}\n\n    /***** Mint Methods *****/\n\n    /// @notice Lends deposit amount in return for fCashAmount using cTokens or aTokens\n    /// @param depositAmountExternal amount of cash to deposit into this method\n    /// @param fCashAmount amount of fCash to purchase (lend)\n    /// @param receiver address to receive the fCash shares\n    /// @param minImpliedRate minimum annualized interest rate to lend at\n    function mintViaAsset(\n        uint256 depositAmountExternal,\n        uint88 fCashAmount,\n        address receiver,\n        uint32 minImpliedRate\n    ) external override {\n        _mintInternal(depositAmountExternal, fCashAmount, receiver, minImpliedRate, false);\n    }\n\n    /// @notice Lends deposit amount in return for fCashAmount using underlying tokens\n    /// @param depositAmountExternal amount of cash to deposit into this method\n    /// @param fCashAmount amount of fCash to purchase (lend)\n    /// @param receiver address to receive the fCash shares\n    /// @param minImpliedRate minimum annualized interest rate to lend at\n    function mintViaUnderlying(\n        uint256 depositAmountExternal,\n        uint88 fCashAmount,\n        address receiver,\n        uint32 minImpliedRate\n    ) external override {\n        _mintInternal(depositAmountExternal, fCashAmount, receiver, minImpliedRate, true);\n    }\n\n    function _mintInternal(\n        uint256 depositAmountExternal,\n        uint88 fCashAmount,\n        address receiver,\n        uint32 minImpliedRate,\n        bool useUnderlying\n    ) internal nonReentrant {\n        require(!hasMatured(), \"fCash matured\");\n        (IERC20 token, bool isETH) = getToken(useUnderlying);\n        uint256 balanceBefore = isETH ? address(this).balance : token.balanceOf(address(this));\n\n        // If dealing in ETH, we use WETH in the wrapper instead of ETH. NotionalV2 uses\n        // ETH natively but due to pull payment requirements for batchLend, it does not support\n        // ETH. batchLend only supports ERC20 tokens like cETH or aETH. Since the wrapper is a compatibility\n        // layer, it will support WETH so integrators can deal solely in ERC20 tokens. Instead of using\n        // \"batchLend\" we will use \"batchBalanceActionWithTrades\". The difference is that \"batchLend\"\n        // is more gas efficient (does not require and additional redeem call to asset tokens). If using cETH\n        // then everything will proceed via batchLend.\n        if (isETH) {\n            IERC20((address(WETH))).safeTransferFrom(msg.sender, address(this), depositAmountExternal);\n            WETH.withdraw(depositAmountExternal);\n\n            BalanceActionWithTrades[] memory action = EncodeDecode.encodeLendETHTrade(\n                getCurrencyId(),\n                getMarketIndex(),\n                depositAmountExternal,\n                fCashAmount,\n                minImpliedRate\n            );\n            // Notional will return any residual ETH as the native token. When we _sendTokensToReceiver those\n            // native ETH tokens will be wrapped back to WETH.\n            NotionalV2.batchBalanceAndTradeAction{value: depositAmountExternal}(address(this), action);\n        } else {\n            // Transfers tokens in for lending, Notional will transfer from this contract.\n            token.safeTransferFrom(msg.sender, address(this), depositAmountExternal);\n\n            // Executes a lending action on Notional\n            BatchLend[] memory action = EncodeDecode.encodeLendTrade(\n                getCurrencyId(),\n                getMarketIndex(),\n                fCashAmount,\n                minImpliedRate,\n                useUnderlying\n            );\n            NotionalV2.batchLend(address(this), action);\n        }\n\n        // Mints ERC20 tokens for the receiver, the false flag denotes that we will not do an\n        // operatorAck\n        _mint(receiver, fCashAmount, \"\", \"\", false);\n\n        _sendTokensToReceiver(token, msg.sender, isETH, balanceBefore);\n    }\n\n    /// @notice This hook will be called every time this contract receives fCash, will validate that\n    /// this is the correct fCash and then mint the corresponding amount of wrapped fCash tokens\n    /// back to the user.\n    function onERC1155Received(\n        address _operator,\n        address _from,\n        uint256 _id,\n        uint256 _value,\n        bytes calldata _data\n    ) external nonReentrant returns (bytes4) {\n        uint256 fCashID = getfCashId();\n        // Only accept erc1155 transfers from NotionalV2\n        require(\n            msg.sender == address(NotionalV2) &&\n            // Only accept the fcash id that corresponds to the listed currency and maturity\n            _id == fCashID &&\n            // Protect against signed value underflows\n            int256(_value) > 0,\n            \"Invalid\"\n        );\n\n        // Double check the account's position, these are not strictly necessary and add gas costs\n        // but might be good safe guards\n        AccountContext memory ac = NotionalV2.getAccountContext(address(this));\n        PortfolioAsset[] memory assets = NotionalV2.getAccountPortfolio(address(this));\n        require(\n            ac.hasDebt == 0x00 &&\n            assets.length == 1 &&\n            EncodeDecode.encodeERC1155Id(\n                assets[0].currencyId,\n                assets[0].maturity,\n                assets[0].assetType\n            ) == fCashID\n        );\n\n        // Update per account fCash balance, calldata from the ERC1155 call is\n        // passed via the ERC777 interface.\n        bytes memory userData;\n        bytes memory operatorData;\n        if (_operator == _from) userData = _data;\n        else operatorData = _data;\n\n        // We don't require a recipient ack here to maintain compatibility\n        // with contracts that don't support ERC777\n        _mint(_from, _value, userData, operatorData, false);\n\n        // This will allow the fCash to be accepted\n        return ERC1155_ACCEPTED;\n    }\n\n    /***** Redeem (Burn) Methods *****/\n\n    /// @notice Redeems tokens using custom options\n    /// @dev re-entrancy is protected on _burn\n    function redeem(uint256 amount, RedeemOpts memory opts) public override {\n        bytes memory data = abi.encode(opts);\n        // In this case, the owner is msg.sender based on the OZ ERC777 implementation\n        burn(amount, data);\n    }\n\n    /// @notice Redeems tokens to asset tokens\n    /// @dev re-entrancy is protected on _burn\n    function redeemToAsset(\n        uint256 amount,\n        address receiver,\n        uint32 maxImpliedRate\n    ) external override {\n        redeem(\n            amount,\n            RedeemOpts({\n                redeemToUnderlying: false,\n                transferfCash: false,\n                receiver: receiver,\n                maxImpliedRate: maxImpliedRate\n            })\n        );\n    }\n\n    /// @notice Redeems tokens to underlying\n    /// @dev re-entrancy is protected on _burn\n    function redeemToUnderlying(\n        uint256 amount,\n        address receiver,\n        uint32 maxImpliedRate\n    ) external override {\n        redeem(\n            amount,\n            RedeemOpts({\n                redeemToUnderlying: true,\n                transferfCash: false,\n                receiver: receiver,\n                maxImpliedRate: maxImpliedRate\n            })\n        );\n    }\n\n    /// @notice Called before tokens are burned (redemption) and so we will handle\n    /// the fCash properly before and after maturity.\n    function _burn(\n        address from,\n        uint256 amount,\n        bytes memory userData,\n        bytes memory operatorData\n    ) internal override nonReentrant {\n        // Save the total supply value before burning to calculate the cash claim share\n        uint256 initialTotalSupply = totalSupply();\n        RedeemOpts memory opts = abi.decode(userData, (RedeemOpts));\n        require(opts.receiver != address(0), \"Receiver is zero address\");\n        // This will validate that the account has sufficient tokens to burn and make\n        // any relevant underlying stateful changes to balances.\n        super._burn(from, amount, userData, operatorData);\n\n        if (hasMatured()) {\n            // If the fCash has matured, then we need to ensure that the account is settled\n            // and then we will transfer back the account's share of asset tokens.\n\n            // This is a noop if the account is already settled\n            NotionalV2.settleAccount(address(this));\n            uint16 currencyId = getCurrencyId();\n\n            (int256 cashBalance, /* */, /* */) = NotionalV2.getAccountBalance(currencyId, address(this));\n            require(0 < cashBalance, \"Negative Cash Balance\");\n\n            // This always rounds down in favor of the wrapped fCash contract.\n            uint256 assetInternalCashClaim = (uint256(cashBalance) * amount) / initialTotalSupply;\n\n            // Transfer withdrawn tokens to the `from` address\n            _withdrawCashToAccount(\n                currencyId,\n                opts.receiver,\n                _safeUint88(assetInternalCashClaim),\n                opts.redeemToUnderlying\n            );\n        } else if (opts.transferfCash) {\n            // If the fCash has not matured, then we can transfer it via ERC1155.\n            // NOTE: this may fail if the destination is a contract and it does not implement \n            // the `onERC1155Received` hook. If that is the case it is possible to use a regular\n            // ERC20 transfer on this contract instead.\n            NotionalV2.safeTransferFrom(\n                address(this), // Sending from this contract\n                opts.receiver, // Where to send the fCash\n                getfCashId(), // fCash identifier\n                amount, // Amount of fCash to send\n                userData\n            );\n        } else {\n            _sellfCash(\n                opts.receiver,\n                amount,\n                opts.redeemToUnderlying,\n                opts.maxImpliedRate\n            );\n        }\n    }\n\n    /// @notice After maturity, withdraw cash back to account\n    function _withdrawCashToAccount(\n        uint16 currencyId,\n        address receiver,\n        uint88 assetInternalCashClaim,\n        bool toUnderlying\n    ) private returns (uint256 tokensTransferred) {\n        (IERC20 token, bool isETH) = getToken(toUnderlying);\n        uint256 balanceBefore = isETH ? address(this).balance : token.balanceOf(address(this));\n\n        NotionalV2.withdraw(currencyId, assetInternalCashClaim, toUnderlying);\n\n        tokensTransferred = _sendTokensToReceiver(token, receiver, isETH, balanceBefore);\n    }\n\n    /// @dev Sells an fCash share back on the Notional AMM\n    function _sellfCash(\n        address receiver,\n        uint256 fCashToSell,\n        bool toUnderlying,\n        uint32 maxImpliedRate\n    ) private returns (uint256 tokensTransferred) {\n        (IERC20 token, bool isETH) = getToken(toUnderlying);\n        uint256 balanceBefore = isETH ? address(this).balance : token.balanceOf(address(this));\n\n        // Sells fCash on Notional AMM (via borrowing)\n        BalanceActionWithTrades[] memory action = EncodeDecode.encodeBorrowTrade(\n            getCurrencyId(),\n            getMarketIndex(),\n            _safeUint88(fCashToSell),\n            maxImpliedRate,\n            toUnderlying\n        );\n        NotionalV2.batchBalanceAndTradeAction(address(this), action);\n\n        // Send borrowed cash back to receiver\n        tokensTransferred = _sendTokensToReceiver(token, receiver, isETH, balanceBefore);\n    }\n\n    function _sendTokensToReceiver(\n        IERC20 token,\n        address receiver,\n        bool isETH,\n        uint256 balanceBefore\n    ) private returns (uint256 tokensTransferred) {\n        uint256 balanceAfter = isETH ? address(this).balance : token.balanceOf(address(this));\n        tokensTransferred = balanceAfter - balanceBefore;\n\n        if (isETH) {\n            WETH.deposit{value: tokensTransferred}();\n            IERC20(address(WETH)).safeTransfer(receiver, tokensTransferred);\n        } else {\n            token.safeTransfer(receiver, tokensTransferred);\n        }\n    }\n\n    function _safeUint88(uint256 x) internal pure returns (uint88) {\n        require(x <= uint256(type(uint88).max));\n        return uint88(x);\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/security/ReentrancyGuard.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant _NOT_ENTERED = 1;\n    uint256 private constant _ENTERED = 2;\n\n    uint256 private _status;\n\n    constructor() {\n        _status = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        // On the first call to nonReentrant, _notEntered will be true\n        require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n        // Any calls to nonReentrant after this point will fail\n        _status = _ENTERED;\n\n        _;\n\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _status = _NOT_ENTERED;\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/UpgradeableBeacon.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IBeacon.sol\";\nimport \"../../access/Ownable.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n * implementation contract, which is where they will delegate all function calls.\n *\n * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.\n */\ncontract UpgradeableBeacon is IBeacon, Ownable {\n    address private _implementation;\n\n    /**\n     * @dev Emitted when the implementation returned by the beacon is changed.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n     * beacon.\n     */\n    constructor(address implementation_) {\n        _setImplementation(implementation_);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function implementation() public view virtual override returns (address) {\n        return _implementation;\n    }\n\n    /**\n     * @dev Upgrades the beacon to a new implementation.\n     *\n     * Emits an {Upgraded} event.\n     *\n     * Requirements:\n     *\n     * - msg.sender must be the owner of the contract.\n     * - `newImplementation` must be a contract.\n     */\n    function upgradeTo(address newImplementation) public virtual onlyOwner {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Sets the implementation contract address for this beacon\n     *\n     * Requirements:\n     *\n     * - `newImplementation` must be a contract.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"UpgradeableBeacon: implementation is not a contract\");\n        _implementation = newImplementation;\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"
      },
      "openzeppelin-contracts-V4/utils/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"
      },
      "contracts/protocol/integration/wrap/notional/nUpgradeableBeacon.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.11;\n\nimport \"openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol\";\n\n/// @dev Re-exporting to make available to brownie\n/// UpgradeableBeacon is Ownable, default owner is the deployer\ncontract nUpgradeableBeacon is UpgradeableBeacon {\n    constructor(address implementation_) UpgradeableBeacon(implementation_) {}\n}\n\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol": {
        "Initializable": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol": {
        "IERC20Upgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol": {
        "ERC777Upgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506117ab806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906111db565b60405180910390f35b610141610312565b6040516101309190611275565b61016161015c3660046112a0565b61039b565b6040519015158152602001610130565b6034545b604051908152602001610130565b6101616101913660046112cc565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba3660046113b0565b6104ea565b005b6101756101cf366004611443565b6001600160a01b031660009081526033602052604090205490565b6101bf6101f8366004611443565b610526565b610141610644565b6101bf610213366004611460565b610653565b6101616102263660046112a0565b610676565b6101616102393660046114b9565b610729565b61017561024c3660046114b9565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b6101bf610285366004611443565b6107cb565b6101bf6102983660046114f2565b6108e7565b6101bf6102ab366004611572565b61091f565b6060603780548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b606060358054610321906115b9565b80601f016020809104026020016040519081016040528092919081815260200182805461034d906115b9565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a981858561093e565b5060019392505050565b60006001600160a01b0383166103e45760405162461bcd60e51b81526004016103db906115f4565b60405180910390fd5b6001600160a01b0384166104495760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103db565b600033905061047a818686866040518060200160405280600081525060405180602001604052806000815250610a65565b610485858285610b8d565b6104b1818686866040518060200160405280600081525060405180602001604052806000815250610c19565b6104df8186868660405180602001604052806000815250604051806020016040528060008152506000610d7f565b506001949350505050565b6104f43386610729565b6105105760405162461bcd60e51b81526004016103db90611638565b61051f85858585856001610f44565b5050505050565b336001600160a01b038216141561058b5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b60648201526084016103db565b6001600160a01b03811660009081526038602052604090205460ff16156105dc57336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916905561060b565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b606060368054610321906115b9565b61067133848484604051806020016040528060008152506001610f44565b505050565b60006001600160a01b03831661069e5760405162461bcd60e51b81526004016103db906115f4565b60003390506106cf818286866040518060200160405280600081525060405180602001604052806000815250610a65565b6106fb818286866040518060200160405280600081525060405180602001604052806000815250610c19565b6103a98182868660405180602001604052806000815250604051806020016040528060008152506000610d7f565b6000816001600160a01b0316836001600160a01b0316148061079457506001600160a01b03831660009081526038602052604090205460ff16801561079457506001600160a01b038083166000908152603a602090815260408083209387168352929052205460ff16155b806107c457506001600160a01b0380831660009081526039602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b03811633141561082e5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b60648201526084016103db565b6001600160a01b03811660009081526038602052604090205460ff161561088257336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff191660011790556108ae565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6108f13385610729565b61090d5760405162461bcd60e51b81526004016103db90611638565b61091984848484611027565b50505050565b61093a33838360405180602001604052806000815250611027565b5050565b6001600160a01b0383166109a25760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103db565b6001600160a01b038216610a045760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103db565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611684565b90506001600160a01b03811615610b8457604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610b51908a908a908a908a908a908a906004016116a1565b600060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b038381166000908152603b602090815260408083209386168352929052205460001981146109195781811015610c0c5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e6365000060448201526064016103db565b610919848484840361093e565b6001600160a01b03851660009081526033602052604090205483811015610c925760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103db565b6001600160a01b03808716600090815260336020526040808220878503905591871681529081208054869290610cc9908490611711565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610d2193929190611729565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d6e91815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e249190611684565b90506001600160a01b03811615610ea0576040516223de2960e01b81526001600160a01b038216906223de2990610e69908b908b908b908b908b908b906004016116a1565b600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b50505050610f3a565b8115610f3a576001600160a01b0386163b15610f3a5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a4016103db565b5050505050505050565b6001600160a01b038616610fa55760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b6001600160a01b038516610ffb5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f206164647265737360448201526064016103db565b3361100a818888888888610a65565b611018818888888888610c19565b610b8481888888888888610d7f565b6001600160a01b0384166110885760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b3361109881866000878787610a65565b6001600160a01b0385166000908152603360205260409020548481101561110d5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103db565b6001600160a01b038616600090815260336020526040812086830390556034805487929061113c90849061175e565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161118a93929190611729565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561121c5783516001600160a01b0316835292840192918401916001016111f7565b50909695505050505050565b6000815180845260005b8181101561124e57602081850181015186830182015201611232565b81811115611260576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006107c46020830184611228565b6001600160a01b038116811461129d57600080fd5b50565b600080604083850312156112b357600080fd5b82356112be81611288565b946020939093013593505050565b6000806000606084860312156112e157600080fd5b83356112ec81611288565b925060208401356112fc81611288565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261133457600080fd5b813567ffffffffffffffff8082111561134f5761134f61130d565b604051601f8301601f19908116603f011681019082821181831017156113775761137761130d565b8160405283815286602085880101111561139057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113c857600080fd5b85356113d381611288565b945060208601356113e381611288565b935060408601359250606086013567ffffffffffffffff8082111561140757600080fd5b61141389838a01611323565b9350608088013591508082111561142957600080fd5b5061143688828901611323565b9150509295509295909350565b60006020828403121561145557600080fd5b81356107c481611288565b60008060006060848603121561147557600080fd5b833561148081611288565b925060208401359150604084013567ffffffffffffffff8111156114a357600080fd5b6114af86828701611323565b9150509250925092565b600080604083850312156114cc57600080fd5b82356114d781611288565b915060208301356114e781611288565b809150509250929050565b6000806000806080858703121561150857600080fd5b843561151381611288565b935060208501359250604085013567ffffffffffffffff8082111561153757600080fd5b61154388838901611323565b9350606087013591508082111561155957600080fd5b5061156687828801611323565b91505092959194509250565b6000806040838503121561158557600080fd5b82359150602083013567ffffffffffffffff8111156115a357600080fd5b6115af85828601611323565b9150509250929050565b600181811c908216806115cd57607f821691505b602082108114156115ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b60006020828403121561169657600080fd5b81516107c481611288565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906116dc90830185611228565b82810360a08401526116ee8185611228565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611724576117246116fb565b500190565b8381526060602082015260006117426060830185611228565b82810360408401526117548185611228565b9695505050505050565b600082821015611770576117706116fb565b50039056fea2646970667358221220b6f53d9c0629291fed298eaea227cc7a6a4ec0b80d8f90a6a1667db1ae7e4a0b64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17AB DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x959B8C3F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD95B6371 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD95B6371 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xFAD8B32A EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0xFC673C4F EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0xFE9D9303 EQ PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x959B8C3F EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x9BD9BBC6 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x62AD1B83 EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6E48538 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x171 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x11DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x312 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x1275 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x15C CALLDATASIZE PUSH1 0x4 PUSH2 0x12A0 JUMP JUMPDEST PUSH2 0x39B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130 JUMP JUMPDEST PUSH1 0x34 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x191 CALLDATASIZE PUSH1 0x4 PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x1BA CALLDATASIZE PUSH1 0x4 PUSH2 0x13B0 JUMP JUMPDEST PUSH2 0x4EA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH2 0x141 PUSH2 0x644 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x1460 JUMP JUMPDEST PUSH2 0x653 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x12A0 JUMP JUMPDEST PUSH2 0x676 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x14B9 JUMP JUMPDEST PUSH2 0x729 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x14B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x285 CALLDATASIZE PUSH1 0x4 PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x298 CALLDATASIZE PUSH1 0x4 PUSH2 0x14F2 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x2AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x91F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2EA JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x35 DUP1 SLOAD PUSH2 0x321 SWAP1 PUSH2 0x15B9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34D SWAP1 PUSH2 0x15B9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x308 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x36F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x308 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37D JUMPI POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x3A9 DUP2 DUP6 DUP6 PUSH2 0x93E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x449 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E736665722066726F6D20746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x47A DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x485 DUP6 DUP3 DUP6 PUSH2 0xB8D JUMP JUMPDEST PUSH2 0x4B1 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC19 JUMP JUMPDEST PUSH2 0x4DF DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0xD7F JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4F4 CALLER DUP7 PUSH2 0x729 JUMP JUMPDEST PUSH2 0x510 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x51F DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xF44 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x58B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617574686F72697A696E672073656C66206173206F706572 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x30BA37B9 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5DC JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x60B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xF4CAEB2D6CA8932A215A353D0703C326EC2D81FC68170F320EB2AB49E9DF61F9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x321 SWAP1 PUSH2 0x15B9 JUMP JUMPDEST PUSH2 0x671 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0xF44 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x69E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x6CF DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x6FB DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC19 JUMP JUMPDEST PUSH2 0x3A9 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x794 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x794 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x7C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ ISZERO PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207265766F6B696E672073656C66206173206F70657261746F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x882 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x8AE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x50546E66E5F44D728365DC3908C63BC5CFEEAB470722C1677E3073A6AC294AA1 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x8F1 CALLER DUP6 PUSH2 0x729 JUMP JUMPDEST PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x919 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1027 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x93A CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1027 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x9A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F76652066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F766520746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x29DDB589B1FB5FC7CF394961C1ADF5F8C6454761ADF795E67FE149F658ABE895 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB0A SWAP2 SWAP1 PUSH2 0x1684 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xB84 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3AD5CBC1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x75AB9782 SWAP1 PUSH2 0xB51 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x16A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x919 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20696E73756666696369656E7420616C6C6F77616E63650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x919 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220616D6F756E74206578636565647320 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x62616C616E6365 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0xCC9 SWAP1 DUP5 SWAP1 PUSH2 0x1711 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6B541DDAA720DB2B10A4D0CDAC39B8D360425FC073085FAC19BC82614677987 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0xD6E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xB281FC8C12954D22544DB45DE3159A39272895B169A852B314F9CC762E44C53B PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE24 SWAP2 SWAP1 PUSH2 0x1684 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x23DE29 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH3 0x23DE29 SWAP1 PUSH2 0xE69 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x16A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF3A JUMP JUMPDEST DUP2 ISZERO PUSH2 0xF3A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EXTCODESIZE ISZERO PUSH2 0xF3A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x4D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20746F6B656E20726563697069656E7420636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20686173206E6F20696D706C656D656E74657220666F7220455243373737546F PUSH1 0x64 DUP3 ADD MSTORE PUSH13 0x1AD95B9CD49958DA5C1A595B9D PUSH1 0x9A SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x3DB JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0xFA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E642066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0xFFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E6420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3DB JUMP JUMPDEST CALLER PUSH2 0x100A DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x1018 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0xC19 JUMP JUMPDEST PUSH2 0xB84 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1088 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E2066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST CALLER PUSH2 0x1098 DUP2 DUP7 PUSH1 0x0 DUP8 DUP8 DUP8 PUSH2 0xA65 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x110D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E20616D6F756E7420657863656564732062616C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x6E6365 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 DUP4 SUB SWAP1 SSTORE PUSH1 0x34 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x113C SWAP1 DUP5 SWAP1 PUSH2 0x175E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA78A9BE3A7B862D26933AD85FB11D80EF66B8F972D7CBBA06621D583943A4098 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x118A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x121C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x11F7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x124E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1232 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1260 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x7C4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1228 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x12BE DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x12EC DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x12FC DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x134F JUMPI PUSH2 0x134F PUSH2 0x130D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1377 JUMPI PUSH2 0x1377 PUSH2 0x130D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x1390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x13C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x13D3 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x13E3 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1413 DUP10 DUP4 DUP11 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1436 DUP9 DUP3 DUP10 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7C4 DUP2 PUSH2 0x1288 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1480 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14AF DUP7 DUP3 DUP8 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x14D7 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x14E7 DUP2 PUSH2 0x1288 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x1513 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1543 DUP9 DUP4 DUP10 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1566 DUP8 DUP3 DUP9 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15AF DUP6 DUP3 DUP7 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15CD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x15EE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A2063616C6C6572206973206E6F7420616E206F70657261746F PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x39103337B9103437B63232B9 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1696 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7C4 DUP2 PUSH2 0x1288 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x16DC SWAP1 DUP4 ADD DUP6 PUSH2 0x1228 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x16EE DUP2 DUP6 PUSH2 0x1228 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1724 JUMPI PUSH2 0x1724 PUSH2 0x16FB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1742 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1228 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1754 DUP2 DUP6 PUSH2 0x1228 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1770 JUMPI PUSH2 0x1770 PUSH2 0x16FB JUMP JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 CREATE2 RETURNDATASIZE SWAP13 MOD 0x29 0x29 0x1F 0xED 0x29 DUP15 0xAE LOG2 0x27 0xCC PUSH27 0x6A4EC0B80D8F90A6A1667DB1AE7E4A0B64736F6C634300080B0033 ",
              "sourceMap": "1211:18824:2:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_approve_1178": {
                  "entryPoint": 2366,
                  "id": 1178,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1337": {
                  "entryPoint": null,
                  "id": 1337,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_burn_1067": {
                  "entryPoint": 4135,
                  "id": 1067,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_callTokensReceived_1281": {
                  "entryPoint": 3455,
                  "id": 1281,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_callTokensToSend_1223": {
                  "entryPoint": 2661,
                  "id": 1223,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_move_1133": {
                  "entryPoint": 3097,
                  "id": 1133,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_msgSender_1812": {
                  "entryPoint": null,
                  "id": 1812,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_send_974": {
                  "entryPoint": 3908,
                  "id": 974,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_spendAllowance_1324": {
                  "entryPoint": 2957,
                  "id": 1324,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_703": {
                  "entryPoint": null,
                  "id": 703,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_728": {
                  "entryPoint": 923,
                  "id": 728,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@authorizeOperator_565": {
                  "entryPoint": 1318,
                  "id": 565,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@balanceOf_389": {
                  "entryPoint": null,
                  "id": 389,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@burn_486": {
                  "entryPoint": 2335,
                  "id": 486,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@decimals_351": {
                  "entryPoint": null,
                  "id": 351,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@defaultOperators_621": {
                  "entryPoint": 688,
                  "id": 621,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@granularity_361": {
                  "entryPoint": null,
                  "id": 361,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@isContract_1560": {
                  "entryPoint": null,
                  "id": 1560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isOperatorFor_520": {
                  "entryPoint": 1833,
                  "id": 520,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_332": {
                  "entryPoint": 786,
                  "id": 332,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@operatorBurn_685": {
                  "entryPoint": 2279,
                  "id": 685,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@operatorSend_655": {
                  "entryPoint": 1258,
                  "id": 655,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@revokeOperator_610": {
                  "entryPoint": 1995,
                  "id": 610,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@send_411": {
                  "entryPoint": 1619,
                  "id": 411,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@symbol_342": {
                  "entryPoint": 1604,
                  "id": 342,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_373": {
                  "entryPoint": null,
                  "id": 373,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_803": {
                  "entryPoint": 947,
                  "id": 803,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_468": {
                  "entryPoint": 1654,
                  "id": 468,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 4899,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 5187,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 5764,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 5305,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 4812,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 5040,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 4768,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 5216,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 5362,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_bytes_memory_ptr": {
                  "entryPoint": 5490,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_string": {
                  "entryPoint": 4648,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5793,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4571,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4725,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5620,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5688,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 5929,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 5905,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 5982,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 5561,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 5883,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 4877,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 4744,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:15088:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "165:507:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "175:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "185:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "179:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "214:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "210:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "210:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "200:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "244:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "255:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "237:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "237:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "237:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "267:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "278:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "271:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "293:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "313:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "307:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "307:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "297:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "336:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "344:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "329:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "329:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "329:22:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "360:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "371:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "382:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "367:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "367:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "394:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "412:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "420:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "398:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "432:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "441:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "436:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "500:146:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "521:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "536:6:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "530:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "530:13:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "553:3:43",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "558:1:43",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "549:3:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "549:11:43"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "562:1:43",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "545:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "545:19:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "526:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "526:39:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "514:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "514:52:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "514:52:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "579:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "590:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "595:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "586:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "586:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "579:3:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "611:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "625:6:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "633:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "621:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "621:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "611:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "462:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "465:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "459:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "459:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "473:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "475:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "484:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "487:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "480:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "480:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "475:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "455:3:43",
                                "statements": []
                              },
                              "src": "451:195:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "655:11:43",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "663:3:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "655:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "134:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "145:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "156:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14:658:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "727:422:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "737:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "757:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "751:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "751:12:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "741:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "779:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "784:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "772:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "772:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "772:19:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "800:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "809:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "804:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "871:110:43",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "885:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "895:4:43",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "889:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "927:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "932:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "923:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "923:11:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "936:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "919:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "919:20:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "955:5:43"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "962:1:43"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "951:3:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "951:13:43"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "966:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "947:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "947:22:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "941:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "941:29:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "912:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "912:59:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "912:59:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "830:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "833:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "827:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "827:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "841:21:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "843:17:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "852:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "855:4:43",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "848:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "848:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "843:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "823:3:43",
                                "statements": []
                              },
                              "src": "819:162:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1015:62:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1044:3:43"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1049:6:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1040:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1040:16:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1058:4:43",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1036:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1036:27:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1065:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1029:38:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1029:38:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "996:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "999:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "993:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "993:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "990:87:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1086:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1101:3:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1114:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1122:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1110:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1110:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1131:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1127:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1127:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1106:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1106:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1097:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1097:39:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1138:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1093:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1093:50:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1086:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "704:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "711:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "719:3:43",
                            "type": ""
                          }
                        ],
                        "src": "677:472:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1275:99:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1292:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1303:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1285:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1285:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1285:21:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1315:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1341:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1353:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1364:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1349:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1349:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1323:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1323:45:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1244:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1255:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1266:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1154:220:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1424:86:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1488:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1497:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1500:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1490:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1490:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1490:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1447:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1458:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1473:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1478:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1469:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1469:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1482:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1465:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1465:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1454:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1454:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1444:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1444:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1437:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1437:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1434:70:43"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1413:5:43",
                            "type": ""
                          }
                        ],
                        "src": "1379:131:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1602:228:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1648:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1657:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1660:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1650:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1650:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1650:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1623:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1632:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1619:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1619:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1644:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1612:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1673:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1699:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1686:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1686:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1677:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1743:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1718:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1718:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1718:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1758:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1768:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1758:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1782:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1809:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1820:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1805:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1805:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1792:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1792:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1782:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1560:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1571:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1583:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1591:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1515:315:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1930:92:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1940:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1952:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1963:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1948:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1948:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1940:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1982:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2007:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2000:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2000:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1993:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1993:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1975:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1975:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1975:41:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1899:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1910:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1921:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1835:187:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2128:76:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2138:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2150:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2161:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2146:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2146:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2138:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2180:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2191:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2173:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2173:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2173:25:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2097:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2108:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2119:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2027:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2313:352:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2359:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2368:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2371:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2361:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2361:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2334:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2330:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2330:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2355:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2326:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2326:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2323:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2384:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2410:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2397:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2397:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2388:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2454:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2429:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2429:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2429:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2469:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2479:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2469:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2493:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2525:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2536:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2521:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2521:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2508:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2508:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2497:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2574:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2549:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2549:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2549:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2591:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2601:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2591:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2617:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2644:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2655:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2640:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2640:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2627:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2627:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2617:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2263:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2274:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2286:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2294:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2302:6:43",
                            "type": ""
                          }
                        ],
                        "src": "2209:456:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2767:87:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2777:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2789:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2800:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2785:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2785:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2777:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2819:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2834:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2842:4:43",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2830:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2830:17:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2812:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2812:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2812:36:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2736:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2747:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2758:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2670:184:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2891:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2908:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2915:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2920:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2911:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2911:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2901:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2901:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2901:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2948:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2951:4:43",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2941:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2941:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2941:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2972:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2965:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2965:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2965:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2859:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3043:666:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3092:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3101:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3104:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3094:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3094:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3094:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3071:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3079:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3067:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3067:17:43"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "3086:3:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3063:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3063:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3056:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3056:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3053:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3117:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3140:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3127:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3127:20:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3121:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3156:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3166:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3160:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3207:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3209:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3209:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3209:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3199:2:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3203:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3196:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3196:10:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3193:36:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3238:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:2:43",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "3248:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3248:7:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "3242:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3264:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3284:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3278:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3278:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3268:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3296:71:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3318:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3342:2:43"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3346:4:43",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3338:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3338:13:43"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "3353:2:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "3334:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3334:22:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3358:2:43",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3330:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3330:31:43"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "3363:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3326:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3326:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3314:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3314:53:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3300:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3426:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3428:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3428:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3428:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3385:10:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3397:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3382:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3382:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3405:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3417:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3402:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3402:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3379:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3379:46:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3376:72:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3464:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3468:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3457:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3457:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3457:22:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3495:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3503:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3488:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3488:18:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3488:18:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3554:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3563:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3566:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3556:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3556:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3556:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3529:6:43"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3537:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3525:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3525:15:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3542:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3521:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3521:26:43"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "3549:3:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3518:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3518:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3515:55:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3596:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3604:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3592:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3592:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3615:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3623:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3611:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3611:17:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3630:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3579:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3579:54:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3579:54:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3657:6:43"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3665:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3653:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3653:15:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3670:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3649:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3649:26:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3677:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3642:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3642:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3642:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3688:15:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3697:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "3688:5:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "3017:6:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3025:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "3033:5:43",
                            "type": ""
                          }
                        ],
                        "src": "2991:718:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3870:729:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3917:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3926:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3929:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3919:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3919:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3919:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3891:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3900:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3887:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3887:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3912:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3883:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3883:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3880:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3942:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3968:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3955:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3955:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3946:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4012:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3987:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3987:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3987:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4027:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4037:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4027:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4051:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4083:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4094:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4079:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4079:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4066:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4066:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4055:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4132:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4107:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4107:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4107:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4149:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4159:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4149:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4175:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4202:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4213:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4198:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4198:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4185:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4185:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4175:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4226:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4257:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4268:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4253:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4253:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4240:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4240:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4230:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4281:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4291:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4285:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4336:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4345:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4348:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4338:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4338:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4338:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4324:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4332:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4321:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4321:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "4318:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4361:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4392:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4403:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4388:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4388:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4412:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4371:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4371:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4361:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4429:49:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4462:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4473:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4458:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4458:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4445:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4445:33:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4433:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4507:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4516:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4519:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4509:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4509:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4509:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4493:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4503:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4490:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4490:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "4487:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4532:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4563:9:43"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4574:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4559:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4559:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4585:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4542:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4542:51:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4532:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3804:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3815:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3827:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3835:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3843:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3851:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3859:6:43",
                            "type": ""
                          }
                        ],
                        "src": "3714:885:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4674:177:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4720:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4729:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4732:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4722:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4722:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4722:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4695:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4704:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4691:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4691:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4716:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4687:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4687:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "4684:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4745:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4771:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4758:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4758:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4749:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4815:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4790:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4790:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4790:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4830:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4840:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4830:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4640:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4651:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4663:6:43",
                            "type": ""
                          }
                        ],
                        "src": "4604:247:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4969:410:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5015:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5024:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5027:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5017:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5017:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5017:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4990:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4999:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4986:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4986:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5011:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "4979:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5040:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5066:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5053:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5053:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5044:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5110:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5085:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5085:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5085:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5125:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5135:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5125:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5149:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5176:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5187:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5172:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5172:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5159:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5159:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5149:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5200:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5231:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5242:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5227:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5227:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5214:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5214:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5204:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5289:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5298:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5301:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5291:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5291:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5291:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5261:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5269:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5258:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5258:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5255:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5314:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5345:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5356:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5341:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5341:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5365:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5324:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5324:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5314:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4919:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4930:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4942:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4950:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4958:6:43",
                            "type": ""
                          }
                        ],
                        "src": "4856:523:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5471:301:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5517:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5526:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5529:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5519:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5519:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5519:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5492:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5501:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5488:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5488:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5513:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5484:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5484:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5481:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5542:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5568:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5555:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5555:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5546:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5612:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5587:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5587:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5587:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5627:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5637:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5627:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5651:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5683:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5694:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5679:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5679:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5666:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5666:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5655:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5732:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5707:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5707:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5707:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5749:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5759:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5749:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5429:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5440:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5452:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5460:6:43",
                            "type": ""
                          }
                        ],
                        "src": "5384:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5916:604:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5963:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5972:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5975:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5965:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5965:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5965:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5937:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5946:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5933:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5933:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5958:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5929:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5929:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5926:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5988:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6014:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6001:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6001:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5992:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6058:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6033:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6033:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6033:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6073:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6083:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6073:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6097:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6124:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6135:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6120:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6120:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6107:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6107:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6097:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6148:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6179:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6190:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6175:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6175:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6162:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6162:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6152:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6203:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6213:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6207:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6246:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6254:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6243:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6243:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6240:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6283:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6314:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6325:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6310:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6334:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6293:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6293:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6283:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6351:48:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6384:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6395:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6380:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6380:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6367:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6367:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6355:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6428:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6437:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6440:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6430:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6430:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6430:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6414:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6424:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6411:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6411:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6408:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6453:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6484:9:43"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6495:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6480:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6480:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6506:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6463:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6463:51:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6453:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5858:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5869:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5881:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5889:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5897:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5905:6:43",
                            "type": ""
                          }
                        ],
                        "src": "5777:743:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6621:292:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6667:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6676:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6679:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6669:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6669:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6669:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6642:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6651:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6638:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6638:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6663:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6634:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6634:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6631:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6692:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6715:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6702:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6702:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6692:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6734:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6765:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6776:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6761:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6761:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6748:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6748:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6738:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6823:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6832:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6835:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6825:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6825:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6825:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6795:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6803:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6792:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6792:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6789:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6848:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6879:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6890:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6875:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6875:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6899:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6858:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6858:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6848:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6579:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6590:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6602:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6610:6:43",
                            "type": ""
                          }
                        ],
                        "src": "6525:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6973:325:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6983:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6997:1:43",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7000:4:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "6993:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6993:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "6983:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7014:38:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7044:4:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7050:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7040:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7040:12:43"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "7018:18:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7091:31:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7093:27:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "7107:6:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7115:4:43",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "7103:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7103:17:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7093:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7071:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7064:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7064:26:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7061:61:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7181:111:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7202:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7209:3:43",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7214:10:43",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "7205:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7205:20:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7195:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7195:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7195:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7246:1:43",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7249:4:43",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7239:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7239:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7239:15:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7274:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7277:4:43",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7267:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7267:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7267:15:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7137:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7160:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7168:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7157:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7157:14:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7134:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7134:38:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7131:161:43"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "6953:4:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "6962:6:43",
                            "type": ""
                          }
                        ],
                        "src": "6918:380:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7477:226:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7494:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7505:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7487:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7487:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7487:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7528:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7539:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7524:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7524:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7544:2:43",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7517:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7517:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7517:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7578:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7563:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7563:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7583:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7556:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7556:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7556:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7638:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7649:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7634:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7634:18:43"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7654:6:43",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7627:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7627:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7627:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7670:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7682:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7693:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7678:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7678:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7670:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7454:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7468:4:43",
                            "type": ""
                          }
                        ],
                        "src": "7303:400:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7882:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7899:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7910:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7892:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7892:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7892:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7933:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7944:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7929:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7929:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7949:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7922:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7922:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7922:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7972:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7983:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7968:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7968:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e736665722066726f6d20746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7988:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer from the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7961:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7961:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7961:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8043:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8054:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8039:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8039:18:43"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8059:8:43",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8032:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8032:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8032:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8077:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8089:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8100:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8085:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8085:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8077:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7859:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7873:4:43",
                            "type": ""
                          }
                        ],
                        "src": "7708:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8289:234:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8306:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8317:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8299:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8299:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8299:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8340:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8351:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8336:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8336:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8356:2:43",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8329:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8329:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8329:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8379:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8390:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8375:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8375:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8395:34:43",
                                    "type": "",
                                    "value": "ERC777: caller is not an operato"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8368:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8368:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8368:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8450:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8461:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8446:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8446:18:43"
                                  },
                                  {
                                    "hexValue": "7220666f7220686f6c646572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8466:14:43",
                                    "type": "",
                                    "value": "r for holder"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8439:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8439:42:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8439:42:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8490:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8502:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8513:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8498:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8498:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8490:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8266:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8280:4:43",
                            "type": ""
                          }
                        ],
                        "src": "8115:408:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8702:226:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8719:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8730:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8712:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8712:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8712:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8753:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8764:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8749:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8749:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8769:2:43",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8742:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8742:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8742:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8792:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8803:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8788:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8788:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617574686f72697a696e672073656c66206173206f706572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8808:34:43",
                                    "type": "",
                                    "value": "ERC777: authorizing self as oper"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8781:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8781:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8781:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8863:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8874:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8859:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8859:18:43"
                                  },
                                  {
                                    "hexValue": "61746f72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8879:6:43",
                                    "type": "",
                                    "value": "ator"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8852:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8852:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8852:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8895:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8907:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8918:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8903:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8903:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8895:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8679:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8693:4:43",
                            "type": ""
                          }
                        ],
                        "src": "8528:400:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9107:223:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9124:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9135:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9117:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9117:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9117:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9158:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9169:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9154:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9154:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9174:2:43",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9147:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9147:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9147:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9197:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9208:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9193:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9193:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207265766f6b696e672073656c66206173206f70657261746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9213:34:43",
                                    "type": "",
                                    "value": "ERC777: revoking self as operato"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9186:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9186:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9186:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9268:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9279:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9264:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9264:18:43"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9284:3:43",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9257:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9257:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9257:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9297:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9309:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9320:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9305:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9305:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9297:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9084:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9098:4:43",
                            "type": ""
                          }
                        ],
                        "src": "8933:397:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9509:227:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9526:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9537:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9519:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9519:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9519:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9560:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9571:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9556:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9556:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9576:2:43",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9549:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9549:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9549:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9599:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9610:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9595:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9595:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617070726f76652066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9615:34:43",
                                    "type": "",
                                    "value": "ERC777: approve from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9588:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9588:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9588:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9670:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9681:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9666:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9666:18:43"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9686:7:43",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9659:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9659:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9659:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9703:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9715:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9726:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9711:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9711:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9703:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9486:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9500:4:43",
                            "type": ""
                          }
                        ],
                        "src": "9335:401:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9915:225:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9932:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9943:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9925:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9925:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9925:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9966:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9977:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9962:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9962:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9982:2:43",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9955:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9955:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9955:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10005:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10016:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10001:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10001:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617070726f766520746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10021:34:43",
                                    "type": "",
                                    "value": "ERC777: approve to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9994:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9994:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9994:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10076:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10087:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10072:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10072:18:43"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10092:5:43",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10065:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10065:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10065:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10107:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10119:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10130:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10115:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10115:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10107:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9892:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9906:4:43",
                            "type": ""
                          }
                        ],
                        "src": "9741:399:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10274:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10284:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10296:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10307:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10292:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10292:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10284:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10326:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10341:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10357:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10362:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "10353:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10353:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10366:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "10349:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10349:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10337:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10337:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10319:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10319:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10319:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10390:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10401:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10386:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10386:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10406:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10379:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10379:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10379:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10235:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10246:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10254:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10265:4:43",
                            "type": ""
                          }
                        ],
                        "src": "10145:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10505:170:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10551:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10560:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10563:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10553:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10553:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10553:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10526:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10535:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10522:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10522:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10547:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10518:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10518:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "10515:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10576:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10595:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10589:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10589:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10580:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10639:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10614:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10614:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10614:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10654:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10664:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10654:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10471:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10482:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10494:6:43",
                            "type": ""
                          }
                        ],
                        "src": "10424:251:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10957:455:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10967:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10985:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10990:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "10981:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10981:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10994:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "10977:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10977:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10971:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11012:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11027:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11035:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11023:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11023:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11005:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11005:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11005:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11059:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11070:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11055:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11055:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11079:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11087:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11075:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11075:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11048:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11048:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11048:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11111:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11122:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11107:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11107:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11131:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11139:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11127:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11127:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11100:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11100:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11100:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11163:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11174:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11159:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11159:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11179:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11152:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11152:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11152:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11206:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11217:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11202:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11202:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11223:3:43",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11195:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11195:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11195:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11236:60:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "11268:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11280:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11291:3:43",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11276:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11276:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "11250:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11250:46:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11240:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11316:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11327:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11312:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11312:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11337:6:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11345:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11333:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11333:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11305:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11305:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11305:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11365:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "11391:6:43"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11399:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "11373:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11373:33:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11365:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10886:9:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "10897:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10905:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10913:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10921:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10929:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10937:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10948:4:43",
                            "type": ""
                          }
                        ],
                        "src": "10680:732:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11591:180:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11608:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11619:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11601:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11601:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11601:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11642:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11653:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11638:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11638:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11658:2:43",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11631:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11631:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11631:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11681:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11692:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11677:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11677:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "11697:32:43",
                                    "type": "",
                                    "value": "ERC777: insufficient allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11670:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11670:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11670:60:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11739:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11751:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11762:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11747:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11747:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11739:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11568:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11582:4:43",
                            "type": ""
                          }
                        ],
                        "src": "11417:354:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11950:229:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11967:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11978:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11960:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11960:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11960:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12001:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12012:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11997:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11997:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12017:2:43",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11990:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11990:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11990:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12040:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12051:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12036:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12036:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e7366657220616d6f756e74206578636565647320",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12056:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer amount exceeds "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12029:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12029:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12029:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12111:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12122:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12107:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12107:18:43"
                                  },
                                  {
                                    "hexValue": "62616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12127:9:43",
                                    "type": "",
                                    "value": "balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12100:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12100:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12100:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12146:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12158:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12169:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12154:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12154:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12146:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11927:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11941:4:43",
                            "type": ""
                          }
                        ],
                        "src": "11776:403:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12216:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12233:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12240:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12245:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12236:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12236:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12226:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12226:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12226:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12273:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12276:4:43",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12266:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12266:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12266:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12297:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12300:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "12290:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12290:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12290:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "12184:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12364:80:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12391:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "12393:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12393:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12393:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12380:1:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "12387:1:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "12383:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12383:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12377:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12377:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "12374:39:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12422:16:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "12433:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "12436:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12429:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12429:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "12422:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "12347:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "12350:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "12356:3:43",
                            "type": ""
                          }
                        ],
                        "src": "12316:128:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12642:257:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12659:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12670:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12652:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12652:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12652:25:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12697:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12708:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12693:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12693:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12713:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12686:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12686:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12686:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12725:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12757:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12769:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12780:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12765:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12765:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "12739:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12739:45:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12729:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12804:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12815:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12800:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12800:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12824:6:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12832:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12820:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12820:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12793:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12793:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12793:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12852:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12878:6:43"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12886:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "12860:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12860:33:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12852:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12595:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12606:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12614:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12622:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12633:4:43",
                            "type": ""
                          }
                        ],
                        "src": "12449:450:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13078:307:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13095:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13106:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13088:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13088:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13088:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13129:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13140:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13125:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13125:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13145:2:43",
                                    "type": "",
                                    "value": "77"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13118:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13118:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13118:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13168:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13179:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13164:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13164:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20746f6b656e20726563697069656e7420636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13184:34:43",
                                    "type": "",
                                    "value": "ERC777: token recipient contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13157:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13157:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13157:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13239:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13250:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13235:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13235:18:43"
                                  },
                                  {
                                    "hexValue": "20686173206e6f20696d706c656d656e74657220666f7220455243373737546f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13255:34:43",
                                    "type": "",
                                    "value": " has no implementer for ERC777To"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13228:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13228:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13228:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13310:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13321:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13306:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13306:19:43"
                                  },
                                  {
                                    "hexValue": "6b656e73526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13327:15:43",
                                    "type": "",
                                    "value": "kensRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13299:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13299:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13299:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13352:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13364:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13375:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13360:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13360:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13352:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13055:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13069:4:43",
                            "type": ""
                          }
                        ],
                        "src": "12904:481:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13564:224:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13581:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13592:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13574:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13574:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13574:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13615:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13626:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13611:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13611:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13631:2:43",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13604:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13604:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13604:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13654:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13665:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13650:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13650:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2073656e642066726f6d20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13670:34:43",
                                    "type": "",
                                    "value": "ERC777: send from the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13643:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13643:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13643:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13725:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13736:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13721:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13721:18:43"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13741:4:43",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13714:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13714:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13714:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13755:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13767:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13778:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13763:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13763:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13755:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13541:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13555:4:43",
                            "type": ""
                          }
                        ],
                        "src": "13390:398:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13967:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13984:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13995:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13977:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13977:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13977:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14018:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14029:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14014:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14014:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14034:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14007:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14007:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14007:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14057:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14068:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14053:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14053:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2073656e6420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14073:34:43",
                                    "type": "",
                                    "value": "ERC777: send to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14046:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14046:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14046:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14117:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14129:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14140:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14125:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14125:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14117:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13944:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13958:4:43",
                            "type": ""
                          }
                        ],
                        "src": "13793:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14328:224:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14345:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14356:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14338:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14338:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14338:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14379:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14390:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14375:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14375:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14395:2:43",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14368:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14368:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14368:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14418:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14429:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14414:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14414:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206275726e2066726f6d20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14434:34:43",
                                    "type": "",
                                    "value": "ERC777: burn from the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14407:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14407:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14407:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14489:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14500:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14485:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14485:18:43"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14505:4:43",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14478:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14478:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14478:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14519:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14531:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14542:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14527:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14527:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14519:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14305:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14319:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14154:398:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14731:225:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14748:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14759:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14741:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14741:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14741:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14782:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14793:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14778:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14778:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14798:2:43",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14771:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14771:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14771:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14821:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14832:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14817:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14817:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206275726e20616d6f756e7420657863656564732062616c61",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14837:34:43",
                                    "type": "",
                                    "value": "ERC777: burn amount exceeds bala"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14810:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14810:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14810:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14892:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14903:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14888:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14888:18:43"
                                  },
                                  {
                                    "hexValue": "6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14908:5:43",
                                    "type": "",
                                    "value": "nce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14881:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14881:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14881:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14923:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14935:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14946:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14931:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14931:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14923:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14708:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14722:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14557:399:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15010:76:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15032:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "15034:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15034:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15034:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15026:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15029:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15023:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15023:8:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15020:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15063:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "15075:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "15078:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "15071:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15071:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "15063:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "14992:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "14995:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "15001:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14961:125:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0xffffffffffffffff\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC777: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC777: transfer from the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC777: caller is not an operato\")\n        mstore(add(headStart, 96), \"r for holder\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC777: authorizing self as oper\")\n        mstore(add(headStart, 96), \"ator\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC777: revoking self as operato\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC777: approve from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC777: approve to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 192)\n        let tail_1 := abi_encode_string(value4, add(headStart, 192))\n        mstore(add(headStart, 160), sub(tail_1, headStart))\n        tail := abi_encode_string(value5, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"ERC777: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ERC777: transfer amount exceeds \")\n        mstore(add(headStart, 96), \"balance\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 77)\n        mstore(add(headStart, 64), \"ERC777: token recipient contract\")\n        mstore(add(headStart, 96), \" has no implementer for ERC777To\")\n        mstore(add(headStart, 128), \"kensRecipient\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC777: send from the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC777: send to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC777: burn from the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC777: burn amount exceeds bala\")\n        mstore(add(headStart, 96), \"nce\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906111db565b60405180910390f35b610141610312565b6040516101309190611275565b61016161015c3660046112a0565b61039b565b6040519015158152602001610130565b6034545b604051908152602001610130565b6101616101913660046112cc565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba3660046113b0565b6104ea565b005b6101756101cf366004611443565b6001600160a01b031660009081526033602052604090205490565b6101bf6101f8366004611443565b610526565b610141610644565b6101bf610213366004611460565b610653565b6101616102263660046112a0565b610676565b6101616102393660046114b9565b610729565b61017561024c3660046114b9565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b6101bf610285366004611443565b6107cb565b6101bf6102983660046114f2565b6108e7565b6101bf6102ab366004611572565b61091f565b6060603780548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b606060358054610321906115b9565b80601f016020809104026020016040519081016040528092919081815260200182805461034d906115b9565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a981858561093e565b5060019392505050565b60006001600160a01b0383166103e45760405162461bcd60e51b81526004016103db906115f4565b60405180910390fd5b6001600160a01b0384166104495760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103db565b600033905061047a818686866040518060200160405280600081525060405180602001604052806000815250610a65565b610485858285610b8d565b6104b1818686866040518060200160405280600081525060405180602001604052806000815250610c19565b6104df8186868660405180602001604052806000815250604051806020016040528060008152506000610d7f565b506001949350505050565b6104f43386610729565b6105105760405162461bcd60e51b81526004016103db90611638565b61051f85858585856001610f44565b5050505050565b336001600160a01b038216141561058b5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b60648201526084016103db565b6001600160a01b03811660009081526038602052604090205460ff16156105dc57336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916905561060b565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b606060368054610321906115b9565b61067133848484604051806020016040528060008152506001610f44565b505050565b60006001600160a01b03831661069e5760405162461bcd60e51b81526004016103db906115f4565b60003390506106cf818286866040518060200160405280600081525060405180602001604052806000815250610a65565b6106fb818286866040518060200160405280600081525060405180602001604052806000815250610c19565b6103a98182868660405180602001604052806000815250604051806020016040528060008152506000610d7f565b6000816001600160a01b0316836001600160a01b0316148061079457506001600160a01b03831660009081526038602052604090205460ff16801561079457506001600160a01b038083166000908152603a602090815260408083209387168352929052205460ff16155b806107c457506001600160a01b0380831660009081526039602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b03811633141561082e5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b60648201526084016103db565b6001600160a01b03811660009081526038602052604090205460ff161561088257336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff191660011790556108ae565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6108f13385610729565b61090d5760405162461bcd60e51b81526004016103db90611638565b61091984848484611027565b50505050565b61093a33838360405180602001604052806000815250611027565b5050565b6001600160a01b0383166109a25760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103db565b6001600160a01b038216610a045760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103db565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190611684565b90506001600160a01b03811615610b8457604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610b51908a908a908a908a908a908a906004016116a1565b600060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b038381166000908152603b602090815260408083209386168352929052205460001981146109195781811015610c0c5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e6365000060448201526064016103db565b610919848484840361093e565b6001600160a01b03851660009081526033602052604090205483811015610c925760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103db565b6001600160a01b03808716600090815260336020526040808220878503905591871681529081208054869290610cc9908490611711565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610d2193929190611729565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d6e91815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e249190611684565b90506001600160a01b03811615610ea0576040516223de2960e01b81526001600160a01b038216906223de2990610e69908b908b908b908b908b908b906004016116a1565b600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b50505050610f3a565b8115610f3a576001600160a01b0386163b15610f3a5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a4016103db565b5050505050505050565b6001600160a01b038616610fa55760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b6001600160a01b038516610ffb5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f206164647265737360448201526064016103db565b3361100a818888888888610a65565b611018818888888888610c19565b610b8481888888888888610d7f565b6001600160a01b0384166110885760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b3361109881866000878787610a65565b6001600160a01b0385166000908152603360205260409020548481101561110d5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103db565b6001600160a01b038616600090815260336020526040812086830390556034805487929061113c90849061175e565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161118a93929190611729565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561121c5783516001600160a01b0316835292840192918401916001016111f7565b50909695505050505050565b6000815180845260005b8181101561124e57602081850181015186830182015201611232565b81811115611260576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006107c46020830184611228565b6001600160a01b038116811461129d57600080fd5b50565b600080604083850312156112b357600080fd5b82356112be81611288565b946020939093013593505050565b6000806000606084860312156112e157600080fd5b83356112ec81611288565b925060208401356112fc81611288565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261133457600080fd5b813567ffffffffffffffff8082111561134f5761134f61130d565b604051601f8301601f19908116603f011681019082821181831017156113775761137761130d565b8160405283815286602085880101111561139057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113c857600080fd5b85356113d381611288565b945060208601356113e381611288565b935060408601359250606086013567ffffffffffffffff8082111561140757600080fd5b61141389838a01611323565b9350608088013591508082111561142957600080fd5b5061143688828901611323565b9150509295509295909350565b60006020828403121561145557600080fd5b81356107c481611288565b60008060006060848603121561147557600080fd5b833561148081611288565b925060208401359150604084013567ffffffffffffffff8111156114a357600080fd5b6114af86828701611323565b9150509250925092565b600080604083850312156114cc57600080fd5b82356114d781611288565b915060208301356114e781611288565b809150509250929050565b6000806000806080858703121561150857600080fd5b843561151381611288565b935060208501359250604085013567ffffffffffffffff8082111561153757600080fd5b61154388838901611323565b9350606087013591508082111561155957600080fd5b5061156687828801611323565b91505092959194509250565b6000806040838503121561158557600080fd5b82359150602083013567ffffffffffffffff8111156115a357600080fd5b6115af85828601611323565b9150509250929050565b600181811c908216806115cd57607f821691505b602082108114156115ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b60006020828403121561169657600080fd5b81516107c481611288565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906116dc90830185611228565b82810360a08401526116ee8185611228565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611724576117246116fb565b500190565b8381526060602082015260006117426060830185611228565b82810360408401526117548185611228565b9695505050505050565b600082821015611770576117706116fb565b50039056fea2646970667358221220b6f53d9c0629291fed298eaea227cc7a6a4ec0b80d8f90a6a1667db1ae7e4a0b64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x959B8C3F GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD95B6371 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD95B6371 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xFAD8B32A EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0xFC673C4F EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0xFE9D9303 EQ PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x959B8C3F EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x9BD9BBC6 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x183 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x62AD1B83 EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6E48538 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x171 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x11DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x312 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x1275 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x15C CALLDATASIZE PUSH1 0x4 PUSH2 0x12A0 JUMP JUMPDEST PUSH2 0x39B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130 JUMP JUMPDEST PUSH1 0x34 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x191 CALLDATASIZE PUSH1 0x4 PUSH2 0x12CC JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x130 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x175 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x1BA CALLDATASIZE PUSH1 0x4 PUSH2 0x13B0 JUMP JUMPDEST PUSH2 0x4EA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x1F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x526 JUMP JUMPDEST PUSH2 0x141 PUSH2 0x644 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x1460 JUMP JUMPDEST PUSH2 0x653 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x12A0 JUMP JUMPDEST PUSH2 0x676 JUMP JUMPDEST PUSH2 0x161 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x14B9 JUMP JUMPDEST PUSH2 0x729 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x14B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x285 CALLDATASIZE PUSH1 0x4 PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x298 CALLDATASIZE PUSH1 0x4 PUSH2 0x14F2 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH2 0x1BF PUSH2 0x2AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1572 JUMP JUMPDEST PUSH2 0x91F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2EA JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x35 DUP1 SLOAD PUSH2 0x321 SWAP1 PUSH2 0x15B9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34D SWAP1 PUSH2 0x15B9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x308 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x36F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x308 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37D JUMPI POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x3A9 DUP2 DUP6 DUP6 PUSH2 0x93E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x449 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E736665722066726F6D20746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x47A DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x485 DUP6 DUP3 DUP6 PUSH2 0xB8D JUMP JUMPDEST PUSH2 0x4B1 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC19 JUMP JUMPDEST PUSH2 0x4DF DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0xD7F JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4F4 CALLER DUP7 PUSH2 0x729 JUMP JUMPDEST PUSH2 0x510 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x51F DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0xF44 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x58B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617574686F72697A696E672073656C66206173206F706572 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x30BA37B9 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x5DC JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x60B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xF4CAEB2D6CA8932A215A353D0703C326EC2D81FC68170F320EB2AB49E9DF61F9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x321 SWAP1 PUSH2 0x15B9 JUMP JUMPDEST PUSH2 0x671 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0xF44 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x69E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x6CF DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x6FB DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC19 JUMP JUMPDEST PUSH2 0x3A9 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x794 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x794 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0x7C4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ ISZERO PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207265766F6B696E672073656C66206173206F70657261746F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x882 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x8AE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x50546E66E5F44D728365DC3908C63BC5CFEEAB470722C1677E3073A6AC294AA1 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x8F1 CALLER DUP6 PUSH2 0x729 JUMP JUMPDEST PUSH2 0x90D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DB SWAP1 PUSH2 0x1638 JUMP JUMPDEST PUSH2 0x919 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1027 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x93A CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1027 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x9A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F76652066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F766520746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x29DDB589B1FB5FC7CF394961C1ADF5F8C6454761ADF795E67FE149F658ABE895 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB0A SWAP2 SWAP1 PUSH2 0x1684 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xB84 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3AD5CBC1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x75AB9782 SWAP1 PUSH2 0xB51 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x16A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x919 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20696E73756666696369656E7420616C6C6F77616E63650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH2 0x919 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x93E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0xC92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220616D6F756E74206578636565647320 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x62616C616E6365 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0xCC9 SWAP1 DUP5 SWAP1 PUSH2 0x1711 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6B541DDAA720DB2B10A4D0CDAC39B8D360425FC073085FAC19BC82614677987 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0xD6E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xB281FC8C12954D22544DB45DE3159A39272895B169A852B314F9CC762E44C53B PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE24 SWAP2 SWAP1 PUSH2 0x1684 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xEA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x23DE29 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH3 0x23DE29 SWAP1 PUSH2 0xE69 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x16A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE97 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF3A JUMP JUMPDEST DUP2 ISZERO PUSH2 0xF3A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EXTCODESIZE ISZERO PUSH2 0xF3A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x4D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20746F6B656E20726563697069656E7420636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20686173206E6F20696D706C656D656E74657220666F7220455243373737546F PUSH1 0x64 DUP3 ADD MSTORE PUSH13 0x1AD95B9CD49958DA5C1A595B9D PUSH1 0x9A SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0x3DB JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0xFA5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E642066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0xFFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E6420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3DB JUMP JUMPDEST CALLER PUSH2 0x100A DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0xA65 JUMP JUMPDEST PUSH2 0x1018 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0xC19 JUMP JUMPDEST PUSH2 0xB84 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1088 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E2066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST CALLER PUSH2 0x1098 DUP2 DUP7 PUSH1 0x0 DUP8 DUP8 DUP8 PUSH2 0xA65 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x110D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E20616D6F756E7420657863656564732062616C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x6E6365 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 DUP4 SUB SWAP1 SSTORE PUSH1 0x34 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x113C SWAP1 DUP5 SWAP1 PUSH2 0x175E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA78A9BE3A7B862D26933AD85FB11D80EF66B8F972D7CBBA06621D583943A4098 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x118A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x121C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x11F7 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x124E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1232 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1260 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x7C4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1228 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x12BE DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x12E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x12EC DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x12FC DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x134F JUMPI PUSH2 0x134F PUSH2 0x130D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1377 JUMPI PUSH2 0x1377 PUSH2 0x130D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x1390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x13C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x13D3 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x13E3 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1413 DUP10 DUP4 DUP11 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1436 DUP9 DUP3 DUP10 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7C4 DUP2 PUSH2 0x1288 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1480 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14AF DUP7 DUP3 DUP8 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x14D7 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x14E7 DUP2 PUSH2 0x1288 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1508 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x1513 DUP2 PUSH2 0x1288 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1543 DUP9 DUP4 DUP10 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1566 DUP8 DUP3 DUP9 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15AF DUP6 DUP3 DUP7 ADD PUSH2 0x1323 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x15CD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x15EE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A2063616C6C6572206973206E6F7420616E206F70657261746F PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x39103337B9103437B63232B9 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1696 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7C4 DUP2 PUSH2 0x1288 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x16DC SWAP1 DUP4 ADD DUP6 PUSH2 0x1228 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x16EE DUP2 DUP6 PUSH2 0x1228 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1724 JUMPI PUSH2 0x1724 PUSH2 0x16FB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1742 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1228 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x1754 DUP2 DUP6 PUSH2 0x1228 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1770 JUMPI PUSH2 0x1770 PUSH2 0x16FB JUMP JUMPDEST POP SUB SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 CREATE2 RETURNDATASIZE SWAP13 MOD 0x29 0x29 0x1F 0xED 0x29 DUP15 0xAE LOG2 0x27 0xCC PUSH27 0x6A4EC0B80D8F90A6A1667DB1AE7E4A0B64736F6C634300080B0033 ",
              "sourceMap": "1211:18824:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7330:130;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3484:98;;;:::i;:::-;;;;;;;:::i;9088:197::-;;;;;;:::i;:::-;;:::i;:::-;;;2000:14:43;;1993:22;1975:41;;1963:2;1948:18;9088:197:2;1835:187:43;4277:145:2;4403:12;;4277:145;;;2173:25:43;;;2161:2;2146:18;4277:145:2;2027:177:43;9767:639:2;;;;;;:::i;:::-;;:::i;3924:82::-;;;3997:2;2812:36:43;;2800:2;2785:18;3924:82:2;2670:184:43;4121:95:2;4208:1;4121:95;;7579:366;;;;;;:::i;:::-;;:::i;:::-;;4522:172;;;;;;:::i;:::-;-1:-1:-1;;;;;4665:22:2;4639:7;4665:22;;;:9;:22;;;;;;;4522:172;6385:412;;;;;;:::i;:::-;;:::i;3638:102::-;;;:::i;4824:193::-;;;;;;:::i;:::-;;:::i;5248:439::-;;;;;;:::i;:::-;;:::i;6007:311::-;;;;;;:::i;:::-;;:::i;8630:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8746:19:2;;;8720:7;8746:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8630:151;6861:403;;;;;;:::i;:::-;;:::i;8066:325::-;;;;;;:::i;:::-;;:::i;5817:127::-;;;;;;:::i;:::-;;:::i;7330:130::-;7396:16;7431:22;7424:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7424:29:2;;;;;;;;;;;;;;;;;;;;;;;7330:130;:::o;3484:98::-;3538:13;3570:5;3563:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3563:12:2;;3484:98;-1:-1:-1;;;;;3484:98:2:o;9088:197::-;9170:4;929:10:7;9225:32:2;929:10:7;9242:7:2;9251:5;9225:8;:32::i;:::-;-1:-1:-1;9274:4:2;;9088:197;-1:-1:-1;;;9088:197:2:o;9767:639::-;9903:4;-1:-1:-1;;;;;9927:23:2;;9919:72;;;;-1:-1:-1;;;9919:72:2;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10009:20:2;;10001:71;;;;-1:-1:-1;;;10001:71:2;;7910:2:43;10001:71:2;;;7892:21:43;7949:2;7929:18;;;7922:30;7988:34;7968:18;;;7961:62;-1:-1:-1;;;8039:18:43;;;8032:36;8085:19;;10001:71:2;7708:402:43;10001:71:2;10083:15;929:10:7;10083:30:2;;10124:61;10142:7;10151:6;10159:9;10170:6;10124:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;10196:40;10212:6;10220:7;10229:6;10196:15;:40::i;:::-;10247:49;10253:7;10262:6;10270:9;10281:6;10247:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;10307:70;10327:7;10336:6;10344:9;10355:6;10307:70;;;;;;;;;;;;;;;;;;;;;;;;10371:5;10307:19;:70::i;:::-;-1:-1:-1;10395:4:2;;9767:639;-1:-1:-1;;;;9767:639:2:o;7579:366::-;7786:35;929:10:7;7814:6:2;7786:13;:35::i;:::-;7778:92;;;;-1:-1:-1;;;7778:92:2;;;;;;;:::i;:::-;7880:58;7886:6;7894:9;7905:6;7913:4;7919:12;7933:4;7880:5;:58::i;:::-;7579:366;;;;;:::o;6385:412::-;929:10:7;-1:-1:-1;;;;;6472:24:2;;;;6464:73;;;;-1:-1:-1;;;6464:73:2;;8730:2:43;6464:73:2;;;8712:21:43;8769:2;8749:18;;;8742:30;8808:34;8788:18;;;8781:62;-1:-1:-1;;;8859:18:43;;;8852:34;8903:19;;6464:73:2;8528:400:43;6464:73:2;-1:-1:-1;;;;;6552:27:2;;;;;;:17;:27;;;;;;;;6548:185;;;929:10:7;6602:38:2;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;6602:48:2;;;;;;;;;6595:55;;-1:-1:-1;;6595:55:2;;;6548:185;;;929:10:7;6681:24:2;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;6681:34:2;;;;;;;;;:41;;-1:-1:-1;;6681:41:2;6718:4;6681:41;;;6548:185;6748:42;;929:10:7;;-1:-1:-1;;;;;6748:42:2;;;;;;;;6385:412;:::o;3638:102::-;3694:13;3726:7;3719:14;;;;;:::i;4824:193::-;4956:54;929:10:7;4976:9:2;4987:6;4995:4;4956:54;;;;;;;;;;;;5005:4;4956:5;:54::i;:::-;4824:193;;;:::o;5248:439::-;5334:4;-1:-1:-1;;;;;5358:23:2;;5350:72;;;;-1:-1:-1;;;5350:72:2;;;;;;;:::i;:::-;5433:12;929:10:7;5433:27:2;;5471:56;5489:4;5495;5501:9;5512:6;5471:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;5538:44;5544:4;5550;5556:9;5567:6;5538:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;5593:65;5613:4;5619;5625:9;5636:6;5593:65;;;;;;;;;;;;;;;;;;;;;;;;5652:5;5593:19;:65::i;6007:311::-;6107:4;6154:11;-1:-1:-1;;;;;6142:23:2;:8;-1:-1:-1;;;;;6142:23:2;;:120;;;-1:-1:-1;;;;;;6182:27:2;;;;;;:17;:27;;;;;;;;:79;;;;-1:-1:-1;;;;;;6214:37:2;;;;;;;:24;:37;;;;;;;;:47;;;;;;;;;;;;6213:48;6182:79;6142:169;;;-1:-1:-1;;;;;;6278:23:2;;;;;;;:10;:23;;;;;;;;:33;;;;;;;;;;;;6142:169;6123:188;6007:311;-1:-1:-1;;;6007:311:2:o;6861:403::-;-1:-1:-1;;;;;6945:24:2;;929:10:7;6945:24:2;;6937:70;;;;-1:-1:-1;;;6937:70:2;;9135:2:43;6937:70:2;;;9117:21:43;9174:2;9154:18;;;9147:30;9213:34;9193:18;;;9186:62;-1:-1:-1;;;9264:18:43;;;9257:31;9305:19;;6937:70:2;8933:397:43;6937:70:2;-1:-1:-1;;;;;7022:27:2;;;;;;:17;:27;;;;;;;;7018:185;;;929:10:7;7065:38:2;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;7065:48:2;;;;;;;;;:55;;-1:-1:-1;;7065:55:2;7116:4;7065:55;;;7018:185;;;929:10:7;7158:24:2;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;7158:34:2;;;;;;;;;7151:41;;-1:-1:-1;;7151:41:2;;;7018:185;7218:39;;929:10:7;;-1:-1:-1;;;;;7218:39:2;;;;;;;;6861:403;:::o;8066:325::-;8247:36;929:10:7;8275:7:2;8247:13;:36::i;:::-;8239:93;;;;-1:-1:-1;;;8239:93:2;;;;;;;:::i;:::-;8342:42;8348:7;8357:6;8365:4;8371:12;8342:5;:42::i;:::-;8066:325;;;;:::o;5817:127::-;5900:37;929:10:7;5920:6:2;5928:4;5900:37;;;;;;;;;;;;:5;:37::i;:::-;5817:127;;:::o;15543:373::-;-1:-1:-1;;;;;15674:20:2;;15666:70;;;;-1:-1:-1;;;15666:70:2;;9537:2:43;15666:70:2;;;9519:21:43;9576:2;9556:18;;;9549:30;9615:34;9595:18;;;9588:62;-1:-1:-1;;;9666:18:43;;;9659:35;9711:19;;15666:70:2;9335:401:43;15666:70:2;-1:-1:-1;;;;;15754:21:2;;15746:69;;;;-1:-1:-1;;;15746:69:2;;9943:2:43;15746:69:2;;;9925:21:43;9982:2;9962:18;;;9955:30;10021:34;10001:18;;;9994:62;-1:-1:-1;;;10072:18:43;;;10065:33;10115:19;;15746:69:2;9741:399:43;15746:69:2;-1:-1:-1;;;;;15826:19:2;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:36;;;15877:32;;2173:25:43;;;15877:32:2;;2146:18:43;15877:32:2;;;;;;;15543:373;;;:::o;16389:483::-;16620:78;;-1:-1:-1;;;16620:78:2;;-1:-1:-1;;;;;10337:32:43;;16620:78:2;;;10319:51:43;1706:31:2;10386:18:43;;;10379:34;16598:19:2;;1457:42;;16620:41;;10292:18:43;;16620:78:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16598:100;-1:-1:-1;;;;;;16712:25:2;;;16708:158;;16753:102;;-1:-1:-1;;;16753:102:2;;-1:-1:-1;;;;;16753:50:2;;;;;:102;;16804:8;;16814:4;;16820:2;;16824:6;;16832:8;;16842:12;;16753:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16708:158;16588:284;16389:483;;;;;;:::o;18525:442::-;-1:-1:-1;;;;;8746:19:2;;;18655:24;8746:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;18721:37:2;;18717:244;;18802:6;18782:16;:26;;18774:69;;;;-1:-1:-1;;;18774:69:2;;11619:2:43;18774:69:2;;;11601:21:43;11658:2;11638:18;;;11631:30;11697:32;11677:18;;;11670:60;11747:18;;18774:69:2;11417:354:43;18774:69:2;18885:51;18894:5;18901:7;18929:6;18910:16;:25;18885:8;:51::i;14794:611::-;-1:-1:-1;;;;;15072:15:2;;15050:19;15072:15;;;:9;:15;;;;;;15105:21;;;;15097:73;;;;-1:-1:-1;;;15097:73:2;;11978:2:43;15097:73:2;;;11960:21:43;12017:2;11997:18;;;11990:30;12056:34;12036:18;;;12029:62;-1:-1:-1;;;12107:18:43;;;12100:37;12154:19;;15097:73:2;11776:403:43;15097:73:2;-1:-1:-1;;;;;15204:15:2;;;;;;;:9;:15;;;;;;15222:20;;;15204:38;;15262:13;;;;;;;;:23;;15236:6;;15204:15;15262:23;;15236:6;;15262:23;:::i;:::-;;;;;;;;15322:2;-1:-1:-1;;;;;15301:56:2;15316:4;-1:-1:-1;;;;;15301:56:2;15306:8;-1:-1:-1;;;;;15301:56:2;;15326:6;15334:8;15344:12;15301:56;;;;;;;;:::i;:::-;;;;;;;;15387:2;-1:-1:-1;;;;;15372:26:2;15381:4;-1:-1:-1;;;;;15372:26:2;;15391:6;15372:26;;;;2173:25:43;;2161:2;2146:18;;2027:177;15372:26:2;;;;;;;;14981:424;14794:611;;;;;;:::o;17561:687::-;17828:79;;-1:-1:-1;;;17828:79:2;;-1:-1:-1;;;;;10337:32:43;;17828:79:2;;;10319:51:43;1803:34:2;10386:18:43;;;10379:34;17806:19:2;;1457:42;;17828:41;;10292:18:43;;17828:79:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17806:101;-1:-1:-1;;;;;;17921:25:2;;;17917:325;;17962:107;;-1:-1:-1;;;17962:107:2;;-1:-1:-1;;;;;17962:55:2;;;;;:107;;18018:8;;18028:4;;18034:2;;18038:6;;18046:8;;18056:12;;17962:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17917:325;;;18090:19;18086:156;;;-1:-1:-1;;;;;18134:13:2;;1476:19:6;:23;18125:106:2;;;;-1:-1:-1;;;18125:106:2;;13106:2:43;18125:106:2;;;13088:21:43;13145:2;13125:18;;;13118:30;13184:34;13164:18;;;13157:62;13255:34;13235:18;;;13228:62;-1:-1:-1;;;13306:19:43;;;13299:44;13360:19;;18125:106:2;12904:481:43;18125:106:2;17796:452;17561:687;;;;;;;:::o;13022:650::-;-1:-1:-1;;;;;13244:18:2;;13236:65;;;;-1:-1:-1;;;13236:65:2;;13592:2:43;13236:65:2;;;13574:21:43;13631:2;13611:18;;;13604:30;13670:34;13650:18;;;13643:62;-1:-1:-1;;;13721:18:43;;;13714:32;13763:19;;13236:65:2;13390:398:43;13236:65:2;-1:-1:-1;;;;;13319:16:2;;13311:61;;;;-1:-1:-1;;;13311:61:2;;13995:2:43;13311:61:2;;;13977:21:43;;;14014:18;;;14007:30;14073:34;14053:18;;;14046:62;14125:18;;13311:61:2;13793:356:43;13311:61:2;929:10:7;13425:69:2;929:10:7;13453:4:2;13459:2;13463:6;13471:8;13481:12;13425:17;:69::i;:::-;13505:57;13511:8;13521:4;13527:2;13531:6;13539:8;13549:12;13505:5;:57::i;:::-;13573:92;13593:8;13603:4;13609:2;13613:6;13621:8;13631:12;13645:19;13573;:92::i;13977:811::-;-1:-1:-1;;;;;14141:18:2;;14133:65;;;;-1:-1:-1;;;14133:65:2;;14356:2:43;14133:65:2;;;14338:21:43;14395:2;14375:18;;;14368:30;14434:34;14414:18;;;14407:62;-1:-1:-1;;;14485:18:43;;;14478:32;14527:19;;14133:65:2;14154:398:43;14133:65:2;929:10:7;14251:73:2;929:10:7;14279:4:2;14209:16;14297:6;14305:4;14311:12;14251:17;:73::i;:::-;-1:-1:-1;;;;;14458:15:2;;14436:19;14458:15;;;:9;:15;;;;;;14491:21;;;;14483:69;;;;-1:-1:-1;;;14483:69:2;;14759:2:43;14483:69:2;;;14741:21:43;14798:2;14778:18;;;14771:30;14837:34;14817:18;;;14810:62;-1:-1:-1;;;14888:18:43;;;14881:33;14931:19;;14483:69:2;14557:399:43;14483:69:2;-1:-1:-1;;;;;14586:15:2;;;;;;:9;:15;;;;;14604:20;;;14586:38;;14644:12;:22;;14618:6;;14586:15;14644:22;;14618:6;;14644:22;:::i;:::-;;;;;;;;14699:4;-1:-1:-1;;;;;14682:50:2;14689:8;-1:-1:-1;;;;;14682:50:2;;14705:6;14713:4;14719:12;14682:50;;;;;;;;:::i;:::-;;;;;;;;14747:34;;2173:25:43;;;14770:1:2;;-1:-1:-1;;;;;14747:34:2;;;;;2161:2:43;2146:18;14747:34:2;;;;;;;14123:665;;13977:811;;;;:::o;14:658:43:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:43;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:43;;14:658;-1:-1:-1;;;;;;14:658:43:o;677:472::-;719:3;757:5;751:12;784:6;779:3;772:19;809:1;819:162;833:6;830:1;827:13;819:162;;;895:4;951:13;;;947:22;;941:29;923:11;;;919:20;;912:59;848:12;819:162;;;999:6;996:1;993:13;990:87;;;1065:1;1058:4;1049:6;1044:3;1040:16;1036:27;1029:38;990:87;-1:-1:-1;1131:2:43;1110:15;-1:-1:-1;;1106:29:43;1097:39;;;;1138:4;1093:50;;677:472;-1:-1:-1;;677:472:43:o;1154:220::-;1303:2;1292:9;1285:21;1266:4;1323:45;1364:2;1353:9;1349:18;1341:6;1323:45;:::i;1379:131::-;-1:-1:-1;;;;;1454:31:43;;1444:42;;1434:70;;1500:1;1497;1490:12;1434:70;1379:131;:::o;1515:315::-;1583:6;1591;1644:2;1632:9;1623:7;1619:23;1615:32;1612:52;;;1660:1;1657;1650:12;1612:52;1699:9;1686:23;1718:31;1743:5;1718:31;:::i;:::-;1768:5;1820:2;1805:18;;;;1792:32;;-1:-1:-1;;;1515:315:43:o;2209:456::-;2286:6;2294;2302;2355:2;2343:9;2334:7;2330:23;2326:32;2323:52;;;2371:1;2368;2361:12;2323:52;2410:9;2397:23;2429:31;2454:5;2429:31;:::i;:::-;2479:5;-1:-1:-1;2536:2:43;2521:18;;2508:32;2549:33;2508:32;2549:33;:::i;:::-;2209:456;;2601:7;;-1:-1:-1;;;2655:2:43;2640:18;;;;2627:32;;2209:456::o;2859:127::-;2920:10;2915:3;2911:20;2908:1;2901:31;2951:4;2948:1;2941:15;2975:4;2972:1;2965:15;2991:718;3033:5;3086:3;3079:4;3071:6;3067:17;3063:27;3053:55;;3104:1;3101;3094:12;3053:55;3140:6;3127:20;3166:18;3203:2;3199;3196:10;3193:36;;;3209:18;;:::i;:::-;3284:2;3278:9;3252:2;3338:13;;-1:-1:-1;;3334:22:43;;;3358:2;3330:31;3326:40;3314:53;;;3382:18;;;3402:22;;;3379:46;3376:72;;;3428:18;;:::i;:::-;3468:10;3464:2;3457:22;3503:2;3495:6;3488:18;3549:3;3542:4;3537:2;3529:6;3525:15;3521:26;3518:35;3515:55;;;3566:1;3563;3556:12;3515:55;3630:2;3623:4;3615:6;3611:17;3604:4;3596:6;3592:17;3579:54;3677:1;3670:4;3665:2;3657:6;3653:15;3649:26;3642:37;3697:6;3688:15;;;;;;2991:718;;;;:::o;3714:885::-;3827:6;3835;3843;3851;3859;3912:3;3900:9;3891:7;3887:23;3883:33;3880:53;;;3929:1;3926;3919:12;3880:53;3968:9;3955:23;3987:31;4012:5;3987:31;:::i;:::-;4037:5;-1:-1:-1;4094:2:43;4079:18;;4066:32;4107:33;4066:32;4107:33;:::i;:::-;4159:7;-1:-1:-1;4213:2:43;4198:18;;4185:32;;-1:-1:-1;4268:2:43;4253:18;;4240:32;4291:18;4321:14;;;4318:34;;;4348:1;4345;4338:12;4318:34;4371:49;4412:7;4403:6;4392:9;4388:22;4371:49;:::i;:::-;4361:59;;4473:3;4462:9;4458:19;4445:33;4429:49;;4503:2;4493:8;4490:16;4487:36;;;4519:1;4516;4509:12;4487:36;;4542:51;4585:7;4574:8;4563:9;4559:24;4542:51;:::i;:::-;4532:61;;;3714:885;;;;;;;;:::o;4604:247::-;4663:6;4716:2;4704:9;4695:7;4691:23;4687:32;4684:52;;;4732:1;4729;4722:12;4684:52;4771:9;4758:23;4790:31;4815:5;4790:31;:::i;4856:523::-;4942:6;4950;4958;5011:2;4999:9;4990:7;4986:23;4982:32;4979:52;;;5027:1;5024;5017:12;4979:52;5066:9;5053:23;5085:31;5110:5;5085:31;:::i;:::-;5135:5;-1:-1:-1;5187:2:43;5172:18;;5159:32;;-1:-1:-1;5242:2:43;5227:18;;5214:32;5269:18;5258:30;;5255:50;;;5301:1;5298;5291:12;5255:50;5324:49;5365:7;5356:6;5345:9;5341:22;5324:49;:::i;:::-;5314:59;;;4856:523;;;;;:::o;5384:388::-;5452:6;5460;5513:2;5501:9;5492:7;5488:23;5484:32;5481:52;;;5529:1;5526;5519:12;5481:52;5568:9;5555:23;5587:31;5612:5;5587:31;:::i;:::-;5637:5;-1:-1:-1;5694:2:43;5679:18;;5666:32;5707:33;5666:32;5707:33;:::i;:::-;5759:7;5749:17;;;5384:388;;;;;:::o;5777:743::-;5881:6;5889;5897;5905;5958:3;5946:9;5937:7;5933:23;5929:33;5926:53;;;5975:1;5972;5965:12;5926:53;6014:9;6001:23;6033:31;6058:5;6033:31;:::i;:::-;6083:5;-1:-1:-1;6135:2:43;6120:18;;6107:32;;-1:-1:-1;6190:2:43;6175:18;;6162:32;6213:18;6243:14;;;6240:34;;;6270:1;6267;6260:12;6240:34;6293:49;6334:7;6325:6;6314:9;6310:22;6293:49;:::i;:::-;6283:59;;6395:2;6384:9;6380:18;6367:32;6351:48;;6424:2;6414:8;6411:16;6408:36;;;6440:1;6437;6430:12;6408:36;;6463:51;6506:7;6495:8;6484:9;6480:24;6463:51;:::i;:::-;6453:61;;;5777:743;;;;;;;:::o;6525:388::-;6602:6;6610;6663:2;6651:9;6642:7;6638:23;6634:32;6631:52;;;6679:1;6676;6669:12;6631:52;6715:9;6702:23;6692:33;;6776:2;6765:9;6761:18;6748:32;6803:18;6795:6;6792:30;6789:50;;;6835:1;6832;6825:12;6789:50;6858:49;6899:7;6890:6;6879:9;6875:22;6858:49;:::i;:::-;6848:59;;;6525:388;;;;;:::o;6918:380::-;6997:1;6993:12;;;;7040;;;7061:61;;7115:4;7107:6;7103:17;7093:27;;7061:61;7168:2;7160:6;7157:14;7137:18;7134:38;7131:161;;;7214:10;7209:3;7205:20;7202:1;7195:31;7249:4;7246:1;7239:15;7277:4;7274:1;7267:15;7131:161;;6918:380;;;:::o;7303:400::-;7505:2;7487:21;;;7544:2;7524:18;;;7517:30;7583:34;7578:2;7563:18;;7556:62;-1:-1:-1;;;7649:2:43;7634:18;;7627:34;7693:3;7678:19;;7303:400::o;8115:408::-;8317:2;8299:21;;;8356:2;8336:18;;;8329:30;8395:34;8390:2;8375:18;;8368:62;-1:-1:-1;;;8461:2:43;8446:18;;8439:42;8513:3;8498:19;;8115:408::o;10424:251::-;10494:6;10547:2;10535:9;10526:7;10522:23;10518:32;10515:52;;;10563:1;10560;10553:12;10515:52;10595:9;10589:16;10614:31;10639:5;10614:31;:::i;10680:732::-;-1:-1:-1;;;;;11023:15:43;;;11005:34;;11075:15;;;11070:2;11055:18;;11048:43;11127:15;;11122:2;11107:18;;11100:43;11174:2;11159:18;;11152:34;;;11223:3;11217;11202:19;;11195:32;;;10948:4;;11250:46;;11276:19;;11268:6;11250:46;:::i;:::-;11345:9;11337:6;11333:22;11327:3;11316:9;11312:19;11305:51;11373:33;11399:6;11391;11373:33;:::i;:::-;11365:41;10680:732;-1:-1:-1;;;;;;;;;10680:732:43:o;12184:127::-;12245:10;12240:3;12236:20;12233:1;12226:31;12276:4;12273:1;12266:15;12300:4;12297:1;12290:15;12316:128;12356:3;12387:1;12383:6;12380:1;12377:13;12374:39;;;12393:18;;:::i;:::-;-1:-1:-1;12429:9:43;;12316:128::o;12449:450::-;12670:6;12659:9;12652:25;12713:2;12708;12697:9;12693:18;12686:30;12633:4;12739:45;12780:2;12769:9;12765:18;12757:6;12739:45;:::i;:::-;12832:9;12824:6;12820:22;12815:2;12804:9;12800:18;12793:50;12860:33;12886:6;12878;12860:33;:::i;:::-;12852:41;12449:450;-1:-1:-1;;;;;;12449:450:43:o;14961:125::-;15001:4;15029:1;15026;15023:8;15020:34;;;15034:18;;:::i;:::-;-1:-1:-1;15071:9:43;;14961:125::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "decimals()": "313ce567",
              "defaultOperators()": "06e48538",
              "granularity()": "556f0dc7",
              "isOperatorFor(address,address)": "d95b6371",
              "name()": "06fdde03",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777RecipientUpgradeable.sol": {
        "IERC777RecipientUpgradeable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "tokensReceived",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "tokensReceived(address,address,address,uint256,bytes,bytes)": "0023de29"
            }
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777SenderUpgradeable.sol": {
        "IERC777SenderUpgradeable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "tokensToSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "tokensToSend(address,address,address,uint256,bytes,bytes)": "75ab9782"
            }
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777Upgradeable.sol": {
        "IERC777Upgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "defaultOperators()": "06e48538",
              "granularity()": "556f0dc7",
              "isOperatorFor(address,address)": "d95b6371",
              "name()": "06fdde03",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd"
            }
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/utils/AddressUpgradeable.sol": {
        "AddressUpgradeable": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220283c8453c132b0e20ad74bcac53d547c4b7e47977e9577dbfd91a51e64f4feb364736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 EXTCODECOPY DUP5 MSTORE8 0xC1 ORIGIN 0xB0 0xE2 EXP 0xD7 0x4B 0xCA 0xC5 RETURNDATASIZE SLOAD PUSH29 0x4B7E47977E9577DBFD91A51E64F4FEB364736F6C634300080B00330000 ",
              "sourceMap": "194:7122:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:7122:6;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220283c8453c132b0e20ad74bcac53d547c4b7e47977e9577dbfd91a51e64f4feb364736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x28 EXTCODECOPY DUP5 MSTORE8 0xC1 ORIGIN 0xB0 0xE2 EXP 0xD7 0x4B 0xCA 0xC5 RETURNDATASIZE SLOAD PUSH29 0x4B7E47977E9577DBFD91A51E64F4FEB364736F6C634300080B00330000 ",
              "sourceMap": "194:7122:6:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/utils/ContextUpgradeable.sol": {
        "ContextUpgradeable": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "@openzeppelin-upgradeable/contracts/utils/introspection/IERC1820RegistryUpgradeable.sol": {
        "IERC1820RegistryUpgradeable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "interfaceHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "InterfaceImplementerSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newManager",
                  "type": "address"
                }
              ],
              "name": "ManagerChanged",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_interfaceHash",
                  "type": "bytes32"
                }
              ],
              "name": "getInterfaceImplementer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "implementsERC165Interface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "implementsERC165InterfaceNoCache",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "interfaceName",
                  "type": "string"
                }
              ],
              "name": "interfaceHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_interfaceHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "implementer",
                  "type": "address"
                }
              ],
              "name": "setInterfaceImplementer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "newManager",
                  "type": "address"
                }
              ],
              "name": "setManager",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "updateERC165Cache",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getInterfaceImplementer(address,bytes32)": "aabbb8ca",
              "getManager(address)": "3d584063",
              "implementsERC165Interface(address,bytes4)": "f712f3e8",
              "implementsERC165InterfaceNoCache(address,bytes4)": "b7056765",
              "interfaceHash(string)": "65ba36c1",
              "setInterfaceImplementer(address,bytes32,address)": "29965a1d",
              "setManager(address,address)": "5df8122f",
              "updateERC165Cache(address,bytes4)": "a41e7d51"
            }
          }
        }
      },
      "contracts/protocol/integration/wrap/notional/WrappedfCash.sol": {
        "WrappedfCash": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract INotionalV2",
                  "name": "_notionalProxy",
                  "type": "address"
                },
                {
                  "internalType": "contract IWETH9",
                  "name": "_weth",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "NotionalV2",
              "outputs": [
                {
                  "internalType": "contract INotionalV2",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH",
              "outputs": [
                {
                  "internalType": "contract IWETH9",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "asset",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "convertToAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "convertToShares",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "assetToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyId",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDecodedID",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketIndex",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaturity",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "getToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isETH",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getUnderlyingToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "underlyingToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getfCashId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "hasMatured",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "maxDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "maxMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "redeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "transferfCash",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "receiver",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "maxImpliedRate",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct IWrappedfCash.RedeemOpts",
                  "name": "opts",
                  "type": "tuple"
                }
              ],
              "name": "redeem",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1941": {
                  "entryPoint": null,
                  "id": 1941,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_2664": {
                  "entryPoint": null,
                  "id": 2664,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_5162": {
                  "entryPoint": null,
                  "id": 5162,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5582": {
                  "entryPoint": null,
                  "id": 5582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_6315": {
                  "entryPoint": null,
                  "id": 6315,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_isConstructor_72": {
                  "entryPoint": 300,
                  "id": 72,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@isContract_1560": {
                  "entryPoint": 330,
                  "id": 1560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_INotionalV2_$7474t_contract$_IWETH9_$7263_fromMemory": {
                  "entryPoint": 370,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "validator_revert_contract_INotionalV2": {
                  "entryPoint": 345,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1026:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "72:86:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "136:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "145:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "148:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "138:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "138:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "138:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "95:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "106:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "121:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "126:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "117:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "117:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "130:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "113:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "113:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "102:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "102:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "92:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "92:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "85:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "85:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "82:70:43"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_INotionalV2",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "61:5:43",
                            "type": ""
                          }
                        ],
                        "src": "14:144:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "296:313:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "342:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "354:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "344:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "344:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "344:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "317:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "326:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "313:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "313:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "338:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "309:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "309:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "306:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "367:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "386:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "380:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "380:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "371:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "443:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_INotionalV2",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:37:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "405:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "405:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "458:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "468:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "458:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "482:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "507:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "518:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "503:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "503:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "497:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "497:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "486:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "569:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_INotionalV2",
                                  "nodeType": "YulIdentifier",
                                  "src": "531:37:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "531:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "531:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "586:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "596:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "586:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_INotionalV2_$7474t_contract$_IWETH9_$7263_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "254:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "265:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "277:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "285:6:43",
                            "type": ""
                          }
                        ],
                        "src": "163:446:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "788:236:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "816:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "798:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "798:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "798:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "850:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "855:2:43",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "828:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "828:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "828:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "889:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "874:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "874:18:43"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "894:34:43",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "867:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "949:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "960:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "945:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "945:18:43"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "965:16:43",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "938:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "938:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "938:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "991:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1003:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1014:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "991:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "765:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "779:4:43",
                            "type": ""
                          }
                        ],
                        "src": "614:410:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_INotionalV2(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_INotionalV2_$7474t_contract$_IWETH9_$7263_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_INotionalV2(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_INotionalV2(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b506040516200622038038062006220833981016040819052620000349162000172565b818181818181600060019054906101000a900460ff166200005c5760005460ff161562000066565b620000666200012c565b620000ce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000f1576000805461ffff19166101011790555b6001600160a01b03808416608052821660a052801562000117576000805461ff00191690555b5050600160665550620001b195505050505050565b600062000144306200014a60201b620022291760201c565b15905090565b6001600160a01b03163b151590565b6001600160a01b03811681146200016f57600080fd5b50565b600080604083850312156200018657600080fd5b8251620001938162000159565b6020840151909250620001a68162000159565b809150509250929050565b60805160a051615f8c62000294600039600081816105b601528181611125015281816125ec0152818161262a01528181613b410152613bbf0152600081816103dc015281816107ef01528181610a5f01528181610b6301528181610cc201528181610f2101528181610f860152818161122d015281816119a601528181611bb101528181611d1d01528181611da301528181611e39015281816120090152818161227001528181612312015281816126af015281816127800152818161350f015281816135aa015281816136a80152818161455801526146a30152615f8c6000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063959b8c3f1161019d578063cf387fed116100e9578063ee719bc8116100a2578063f8eef10f1161007c578063f8eef10f14610763578063fad8b32a1461077a578063fc673c4f1461078d578063fe9d9303146107a057600080fd5b8063ee719bc8146106fd578063ef8b30f714610724578063f23a6e611461073757600080fd5b8063cf387fed14610652578063d84878b81461066d578063d905777e14610680578063d95b637114610693578063dd62ed3e146106a6578063e16695b5146106df57600080fd5b8063b3d7f6b911610156578063c63d75b611610130578063c63d75b614610611578063c6e6f59214610624578063cb803ceb14610637578063ce96cb771461063f57600080fd5b8063b3d7f6b9146105d8578063b460af94146105eb578063ba087652146105fe57600080fd5b8063959b8c3f1461056857806395d89b411461057b5780639bd9bbc614610583578063a109329514610596578063a9059cbb1461059e578063ad5c4648146105b157600080fd5b8063313ce5671161025c57806351489551116102155780636e553f65116101ef5780636e553f651461050657806370a0823114610519578063745d08d91461054257806394bf804d1461055557600080fd5b806351489551146104ba578063556f0dc7146104ec57806362ad1b83146104f357600080fd5b8063313ce5671461043c57806338d52e0f146104515780633d3192cb14610459578063402d267d1461046c57806348d8f98d1461047f5780634cdad506146104a757600080fd5b80630a28a477116102c957806318160ddd116102a357806318160ddd146103cf57806319b53d35146103d757806323b872dd1461041657806329cf14051461042957600080fd5b80630a28a477146103945780630db8481c146103a7578063152b838c146103bc57600080fd5b806301e1d114146103115780630558d5001461032c57806306e485381461033457806306fdde031461034957806307a2d13a1461035e578063095ea7b314610371575b600080fd5b6103196107b3565b6040519081526020015b60405180910390f35b606554610319565b61033c6108e0565b6040516103239190614b90565b610351610942565b6040516103239190614c35565b61031961036c366004614c48565b6109cb565b61038461037f366004614c79565b610adc565b6040519015158152602001610323565b6103196103a2366004614c48565b610af4565b6103ba6103b5366004614ccc565b610be9565b005b6103ba6103ca366004614d42565b610bfd565b603454610319565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610323565b610384610424366004614d7b565b610fc9565b6103ba610437366004614ccc565b6110f7565b60085b60405160ff9091168152602001610323565b6103fe611105565b6103ba610467366004614dbc565b61114c565b61031961047a366004614dfe565b61118b565b6104876111a9565b6040805161ffff909316835264ffffffffff909116602083015201610323565b6103196104b5366004614c48565b6111cb565b6104cd6104c8366004614e29565b6112ac565b604080516001600160a01b039093168352901515602083015201610323565b6001610319565b6103ba610501366004614f54565b6112e4565b610319610514366004614fe6565b611320565b610319610527366004614dfe565b6001600160a01b031660009081526033602052604090205490565b6103ba610550366004614dbc565b6113da565b610319610563366004614fe6565b611419565b6103ba610576366004614dfe565b611477565b610351611595565b6103ba61059136600461500b565b6115a4565b6103846115c2565b6103846105ac366004614c79565b6115db565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6103196105e6366004614c48565b61168e565b6103196105f9366004615063565b6116d8565b61031961060c366004615063565b61175f565b61031961061f366004614dfe565b6118ee565b610319610632366004614c48565b61191b565b61043f611a25565b61031961064d366004614dfe565b611a5d565b61065a611a7f565b60405161ffff9091168152602001610323565b6103ba61067b36600461509a565b611a9e565b61031961068e366004614dfe565b611acc565b6103846106a136600461513e565b611aea565b6103196106b436600461513e565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b6106e7611b8b565b60405164ffffffffff9091168152602001610323565b610705611ba9565b604080516001600160a01b039093168352602083019190915201610323565b610319610732366004614c48565b611c91565b61074a61074536600461516c565b611cdb565b6040516001600160e01b03199091168152602001610323565b61076b612001565b6040516103239392919061522b565b6103ba610788366004614dfe565b6120bc565b6103ba61079b366004615260565b6121d8565b6103ba6107ae3660046152df565b61220a565b60006107bd6115c2565b156107cf576107ca612238565b905090565b60006107d9611ba9565b9150506000806107e76111a9565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c52c43e1848461082760345490565b6040516001600160e01b031960e086901b16815261ffff909316600484015264ffffffffff909116602483015260448201524260648201526000608482015260a401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190615325565b905060006305f5e1006108bd8684615354565b6108c791906153ef565b905060008112156108d757600080fd5b95945050505050565b6060603780548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161091a575b5050505050905090565b6060603580546109519061541d565b80601f016020809104026020016040519081016040528092919081815260200182805461097d9061541d565b80156109385780601f1061099f57610100808354040283529160200191610938565b820191906000526020600020905b8154815290600101906020018083116109ad57509395945050505050565b60006109d56115c2565b15610a0a5760006109e4612238565b90506109ef60345490565b6109f98285615452565b610a039190615471565b9392505050565b600080610a156111a9565b60405163aaae47b560e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482018190524260848301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aaae47b59060a401608060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190615496565b5091979650505050505050565b919050565b600033610aea8185856123bd565b5060019392505050565b6000610afe6115c2565b15610b1257610b0c8261191b565b92915050565b600080610b1d6111a9565b60405163bac9e8b160e01b815261ffff831660048201526024810187905264ffffffffff8216604482015260006064820152426084820152600160a482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bac9e8b19060c401606060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd691906154d3565b50506001600160581b0316949350505050565b610bf78484848460006124e4565b50505050565b600054610100900460ff16610c185760005460ff1615610c1c565b303b155b610c845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff16158015610ca6576000805461ffff19166101011790555b60405163d4ccb0ed60e01b815261ffff841660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d4ccb0ed90602401600060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d3991908101906155a1565b805190915060ff16610d805760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642063757272656e637960801b6044820152606401610c7b565b8051610d979060ff1664ffffffffff85164261283c565b610dd65760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964206d6174757269747960801b6044820152606401610c7b565b610ded61ffff851664ffffffffff8516600161288c565b6065556000610dfa611ba9565b5090506000610e07612001565b50909150600090506001600160a01b03831615610e8957826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8491908101906156d2565b610ea6565b6040518060400160405280600381526020016208aa8960eb1b8152505b90506000610eba8764ffffffffff166128e7565b9050610f128282604051602001610ed292919061573f565b6040516020818303038152906040528383604051602001610ef4929190615792565b60408051601f198184030181526000835260208301909152906129ec565b610f486001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b836001600160a01b0316836001600160a01b031614158015610f7257506001600160a01b03841615155b15610fad57610fad6001600160a01b0385167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b50505050508015610fc4576000805461ff00191690555b505050565b60006001600160a01b038316610ff15760405162461bcd60e51b8152600401610c7b906157dc565b6001600160a01b0384166110565760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610c7b565b6000339050611087818686866040518060200160405280600081525060405180602001604052806000815250612b66565b611092858285612c8e565b6110be818686866040518060200160405280600081525060405180602001604052806000815250612d1a565b6110ec8186868660405180602001604052806000815250604051806020016040528060008152506000612e80565b506001949350505050565b610bf78484848460016124e4565b600080600061111460016112ac565b91509150806111235781611145565b7f00000000000000000000000000000000000000000000000000000000000000005b9250505090565b610fc4836040518060800160405280600015158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b60006111956115c2565b6111a157600019610b0c565b600092915050565b6000806111c1606554603081901c91600882901c9190565b5090939092509050565b60006111d56115c2565b156111e357610b0c826109cb565b6000806111ee6111a9565b60405163416a158760e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482015242608482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063416a15879060a401608060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190615496565b50919695505050505050565b60008082156112c5576112bd611ba9565b5091506112d3565b6112cd612001565b50909250505b50916001600160a01b038316159150565b6112ee3386611aea565b61130a5760405162461bcd60e51b8152600401610c7b90615820565b61131985858585856001613045565b5050505050565b600061132b8261118b565b8311156113685760405162461bcd60e51b815260206004820152600b60248201526a13585e0811195c1bdcda5d60aa1b6044820152606401610c7b565b600061137384611c91565b905061138c8461138283613128565b85600060016124e4565b60408051858152602081018390526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a39392505050565b610fc4836040518060800160405280600115158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b6000806114258461168e565b90506114348161138286613128565b60408051828152602081018690526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791016113cb565b336001600160a01b03821614156114dc5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561152d57336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916905561155c565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060603680546109519061541d565b610fc433848484604051806020016040528060008152506001613045565b6000426115cd611b8b565b64ffffffffff161115905090565b60006001600160a01b0383166116035760405162461bcd60e51b8152600401610c7b906157dc565b6000339050611634818286866040518060200160405280600081525060405180602001604052806000815250612b66565b611660818286866040518060200160405280600081525060405180602001604052806000815250612d1a565b610aea8182868660405180602001604052806000815250604051806020016040528060008152506000612e80565b60006116986115c2565b156116cf5760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c826109cb565b6000806116e485610af4565b9050336001600160a01b0384161461170157611701833383612c8e565b61170c818585613142565b60408051868152602081018390526001600160a01b03808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4949350505050565b60008061176a611105565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa1580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190615325565b9050336001600160a01b038416146117f3576117f3833387612c8e565b6117fe858585613142565b6000611808611105565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa158015611850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118749190615325565b90506000611882838361586c565b9050846001600160a01b0316866001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db848b6040516118dc929190918252602082015260400190565b60405180910390a49695505050505050565b60006118f86115c2565b611909576001600160581b0361190c565b60005b6001600160581b031692915050565b60006119256115c2565b1561194a576000611934612238565b90508061194060345490565b6109f99085615452565b6000806119556111a9565b604051631f0750c160e31b815261ffff831660048201526024810187905264ffffffffff82166044820152600060648201819052426084830152600160a48301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f83a86089060c401606060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906154d3565b50506001600160581b031695945050505050565b6000806000611a446007611a37611b8b565b64ffffffffff16426131a7565b915091508015611a575760009250505090565b50919050565b6001600160a01b038116600090815260336020526040812054610b0c906109cb565b6000611a96606554603081901c91600882901c9190565b509092915050565b600081604051602001611ab19190615883565b6040516020818303038152906040529050610fc4838261220a565b6001600160a01b038116600090815260336020526040812054610b0c565b6000816001600160a01b0316836001600160a01b03161480611b5557506001600160a01b03831660009081526038602052604090205460ff168015611b5557506001600160a01b038083166000908152603a602090815260408083209387168352929052205460ff16155b80610a0357506001600160a01b0380831660009081526039602090815260408083209387168352929052205460ff169392505050565b6000611ba2606554603081901c91600882901c9190565b5092915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e611be6611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061594f565b9092509050600482606001516004811115611c6757611c67615215565b1415611c7f5750805160409091015190939092509050565b80516040909101519094909350915050565b6000611c9b6115c2565b15611cd25760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c8261191b565b600060026066541415611d005760405162461bcd60e51b8152600401610c7b90615985565b60026066556000611d1060655490565b9050336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611d4957508086145b8015611d555750600085135b611d8b5760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610c7b565b60405163b0de221760e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0de22179060240160a060405180830381865afa158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1691906159bc565b604051635a9b7fdb60e11b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b536ffb690602401600060405180830381865afa158015611e80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ea89190810190615a72565b60208301519091506001600160f81b031916158015611ec8575080516001145b8015611f37575082611f3582600081518110611ee657611ee6615b5b565b60200260200101516000015183600081518110611f0557611f05615b5b565b60200260200101516020015184600081518110611f2457611f24615b5b565b60200260200101516040015161288c565b145b611f4057600080fd5b6060808a6001600160a01b03168c6001600160a01b03161415611f9c5787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450611fd692505050565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b611fe48b8a848460006132f0565b505060016066555063f23a6e6160e01b9998505050505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e61203e611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a2919061594f565b508051604082015160609092015190969195509350915050565b6001600160a01b03811633141561211f5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561217357336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561219f565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6121e23385611aea565b6121fe5760405162461bcd60e51b8152600401610c7b90615820565b610bf784848484613439565b61222533838360405180602001604052806000815250613439565b5050565b6001600160a01b03163b151590565b600080612243611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122db9190615b71565b5050604051631baefc5d60e21b815261ffff8416600482015260248101829052600160448201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636ebbf17490606401602060405180830381865afa158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190615325565b905060008113610a035760405162461bcd60e51b815260206004820152600b60248201526a4d75737420536574746c6560a81b6044820152606401610c7b565b6001600160a01b0383166124215760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c7b565b6001600160a01b0382166124835760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c7b565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260665414156125075760405162461bcd60e51b8152600401610c7b90615985565b60026066556125146115c2565b156125515760405162461bcd60e51b815260206004820152600d60248201526c1990d85cda081b585d1d5c9959609a1b6044820152606401610c7b565b60008061255d836112ac565b915091506000816125d5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d09190615325565b6125d7565b475b90508115612734576126146001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b61375b565b604051632e1a7d4d60e01b8152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561267657600080fd5b505af115801561268a573d6000803e3d6000fd5b5050505060006126ab61269b611a7f565b6126a3611a25565b8b8b8a613793565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630276b64b8a30846040518463ffffffff1660e01b81526004016126fc929190615bda565b6000604051808303818588803b15801561271557600080fd5b505af1158015612729573d6000803e3d6000fd5b5050505050506127eb565b6127496001600160a01b03841633308b61375b565b6000612766612756611a7f565b61275e611a25565b8a8989613978565b604051630541f52760e41b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063541f5270906127b79030908590600401615caa565b600060405180830381600087803b1580156127d157600080fd5b505af11580156127e5573d6000803e3d6000fd5b50505050505b61282086886001600160581b0316604051806020016040528060008152506040518060200160405280600081525060006132f0565b61282c83338484613ab4565b5050600160665550505050505050565b60008061284883613c0c565b9050600061285586613c76565b61285f9083615d2e565b90508085111561287457600092505050610a03565b60006128808587613e4e565b98975050505050505050565b6000613fff84111561289d57600080fd5b64ffffffffff8311156128af57600080fd5b60088211156128bd57600080fd5b5067ffff000000000000603084901b1665ffffffffff00600884901b161760ff8216179392505050565b60608161290b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612935578061291f81615d46565b915061292e9050600a83615471565b915061290f565b6000816001600160401b0381111561294f5761294f614e46565b6040519080825280601f01601f191660200182016040528015612979576020820181803683370190505b5090505b84156129e45761298e60018361586c565b915061299b600a86615d61565b6129a6906030615d2e565b60f81b8183815181106129bb576129bb615b5b565b60200101906001600160f81b031916908160001a9053506129dd600a86615471565b945061297d565b949350505050565b600054610100900460ff16612a135760405162461bcd60e51b8152600401610c7b90615d75565b610fc4838383614039565b801580612a985750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190615325565b155b612b035760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610c7b565b6040516001600160a01b038316602482015260448101829052610fc490849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614223565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b9190615dc0565b90506001600160a01b03811615612c8557604051633ad5cbc160e11b81526001600160a01b038216906375ab978290612c52908a908a908a908a908a908a90600401615ddd565b600060405180830381600087803b158015612c6c57600080fd5b505af1158015612c80573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b038381166000908152603b60209081526040808320938616835292905220546000198114610bf75781811015612d0d5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610c7b565b610bf784848484036123bd565b6001600160a01b03851660009081526033602052604090205483811015612d935760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610c7b565b6001600160a01b03808716600090815260336020526040808220878503905591871681529081208054869290612dca908490615d2e565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051612e2293929190615e2a565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612e6f91815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190615dc0565b90506001600160a01b03811615612fa1576040516223de2960e01b81526001600160a01b038216906223de2990612f6a908b908b908b908b908b908b90600401615ddd565b600060405180830381600087803b158015612f8457600080fd5b505af1158015612f98573d6000803e3d6000fd5b5050505061303b565b811561303b576001600160a01b0386163b1561303b5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401610c7b565b5050505050505050565b6001600160a01b0386166130a65760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b6001600160a01b0385166130fc5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f20616464726573736044820152606401610c7b565b3361310b818888888888612b66565b613119818888888888612d1a565b612c8581888888888888612e80565b60006001600160581b0382111561313e57600080fd5b5090565b6040805160808101825260018152600060208083018290526001600160a01b03861683850152606083018290529251909261317e929101615883565b60408051601f1981840301815260208301909152600082529150610bf790839086908490613439565b600080600085116131f25760405162461bcd60e51b815260206004820152601560248201527410d1ce881b9bc81b585c9ad95d1cc81b1a5cdd1959605a1b6044820152606401610c7b565b600785111561323c5760405162461bcd60e51b815260206004820152601660248201527510d1ce881b585c9ad95d081a5b99195e08189bdd5b9960521b6044820152606401610c7b565b600061324784613c0c565b905060015b8681116132a957600061325e82613c76565b6132689084615d2e565b90508681141561328057509250600091506132e89050565b8681111561329657509250600191506132e89050565b50806132a181615d46565b91505061324c565b5060405162461bcd60e51b815260206004820152601360248201527210d1ce881b9bc81b585c9ad95d08199bdd5b99606a1b6044820152606401610c7b565b935093915050565b6001600160a01b0385166133465760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c7b565b6000339050846034600082825461335d9190615d2e565b90915550506001600160a01b0386166000908152603360205260408120805487929061338a908490615d2e565b909155506133a090508160008888888888612e80565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516133e793929190615e2a565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050505050565b6002606654141561345c5760405162461bcd60e51b8152600401610c7b90615985565b6002606655600061346c60345490565b90506000838060200190518101906134849190615e5f565b60408101519091506001600160a01b03166134e15760405162461bcd60e51b815260206004820152601860248201527f5265636569766572206973207a65726f206164647265737300000000000000006044820152606401610c7b565b6134ed868686866142f5565b6134f56115c2565b1561369c5760405163f667f89760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f667f89790602401600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b50505050600061357d611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156135f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136159190615b71565b50509050806000126136615760405162461bcd60e51b81526020600482015260156024820152744e6567617469766520436173682042616c616e636560581b6044820152606401610c7b565b60008461366e8984615452565b6136789190615471565b905061369383856040015161368c84613128565b875161449e565b5050505061374e565b806020015115613734577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f242432a3083604001516136e460655490565b89896040518663ffffffff1660e01b8152600401613706959493929190615ee3565b600060405180830381600087803b15801561372057600080fd5b505af1158015613693573d6000803e3d6000fd5b61374c816040015186836000015184606001516145da565b505b5050600160665550505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610bf79085906323b872dd60e01b90608401612b2f565b604080516001808252818301909252606091816020015b6137b2614a60565b8152602001906001900390816137aa5790505090506002816000815181106137dc576137dc615b5b565b60200260200101516000019060068111156137f9576137f9615215565b9081600681111561380c5761380c615215565b81525050858160008151811061382457613824615b5b565b60200260200101516020019061ffff16908161ffff1681525050838160008151811061385257613852615b5b565b6020026020010151604001818152505060018160008151811061387757613877615b5b565b602002602001015160800190151590811515815250506001816000815181106138a2576138a2615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106138e9576138e9615b5b565b602090810291909101015160c0015263ffffffff60781b607883901b16600160981b600160f01b03609885901b1660ff60f01b60f088901b1660f860005b60ff16901b17171760001b8160008151811061394557613945615b5b565b602002602001015160c0015160008151811061396357613963615b5b565b60200260200101818152505095945050505050565b604080516001808252818301909252606091816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161398f57905050905085816000815181106139d4576139d4615b5b565b60200260200101516000019061ffff16908161ffff16815250508181600081518110613a0257613a02615b5b565b602090810291909101810151911515910152604080516001808252818301909252908160200160208202803683370190505081600081518110613a4757613a47615b5b565b602090810291909101015160400152805160f086901b60ff60f01b16609886901b600160981b600160f01b031617607885901b63ffffffff60781b1617908290600090613a9657613a96615b5b565b60200260200101516040015160008151811061396357613963615b5b565b60008083613b29576040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190615325565b613b2b565b475b9050613b37838261586c565b91508315613bef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b9a57600080fd5b505af1158015613bae573d6000803e3d6000fd5b50613bea9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915087905084614725565b613c03565b613c036001600160a01b0387168684614725565b50949350505050565b6000613c1c620151806006615452565b613c27906005615452565b613c32906003615452565b821015613c3e57600080fd5b613c4c620151806006615452565b613c57906005615452565b613c62906003615452565b613c6c9083615d61565b610b0c908361586c565b60008160011415613ca557613c8f620151806006615452565b613c9a906005615452565b610b0c906003615452565b8160021415613cdd57613cbc620151806006615452565b613cc7906005615452565b613cd2906003615452565b610b0c906002615452565b8160031415613d1557613cf4620151806006615452565b613cff906005615452565b613d0a906003615452565b610b0c906004615452565b8160041415613d4d57613d2c620151806006615452565b613d37906005615452565b613d42906003615452565b613cd2906004615452565b8160051415613d9057613d64620151806006615452565b613d6f906005615452565b613d7a906003615452565b613d85906004615452565b610b0c906005615452565b8160061415613dd357613da7620151806006615452565b613db2906005615452565b613dbd906003615452565b613dc8906004615452565b610b0c90600a615452565b8160071415613e1657613dea620151806006615452565b613df5906005615452565b613e00906003615452565b613e0b906004615452565b610b0c906014615452565b60405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610c7b565b6000806000613e5c85614755565b9050613e6b6201518085615d61565b15613e7d576000809250925050614032565b838110613e91576000809250925050614032565b600062015180613ea1838761586c565b613eab9190615471565b9050605a8111613ec2579250600191506140329050565b6101688111613f3757600062015180613edc816006615452565b613ee69085615d61565b613ef09190615471565b613efb605a8461586c565b613f059190615d2e565b9050613f12600682615471565b613f1d90605a615d2e565b613f28600683615d61565b60001494509450505050614032565b6108708111613fa957600062015180613f51816006615452565b613f5c906005615452565b613f669085615d61565b613f709190615471565b613f7c6101688461586c565b613f869190615d2e565b9050613f93601e82615471565b613f9e906087615d2e565b613f28601e83615d61565b611de2811161402657600062015180613fc3816006615452565b613fce906005615452565b613fd9906003615452565b613fe39085615d61565b613fed9190615471565b613ff96108708461586c565b6140039190615d2e565b9050614010605a82615471565b61401b9060c3615d2e565b613f28605a83615d61565b61010060009350935050505b9250929050565b600054610100900460ff166140605760405162461bcd60e51b8152600401610c7b90615d75565b8251614073906035906020860190614aa6565b508151614087906036906020850190614aa6565b50805161409b906037906020840190614b26565b5060005b8151811015614104576001603860008484815181106140c0576140c0615b5b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806140fc81615d46565b91505061409f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b15801561417e57600080fd5b505af1158015614192573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561420f57600080fd5b505af1158015612c85573d6000803e3d6000fd5b6000614278826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166147749092919063ffffffff16565b805190915015610fc457808060200190518101906142969190615f1d565b610fc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c7b565b6001600160a01b0384166143565760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b3361436681866000878787612b66565b6001600160a01b038516600090815260336020526040902054848110156143db5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b6064820152608401610c7b565b6001600160a01b038616600090815260336020526040812086830390556034805487929061440a90849061586c565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161445893929190615e2a565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001613429565b60008060006144ac846112ac565b91509150600081614524576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156144fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451f9190615325565b614526565b475b604051625e665d60e31b815261ffff8a1660048201526001600160581b038816602482015286151560448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302f332e8906064016020604051808303816000875af11580156145a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145cd9190615325565b5061288083888484613ab4565b60008060006145e8856112ac565b91509150600081614660576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015614637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465b9190615325565b614662565b475b90506000614689614671611a7f565b614679611a25565b6146828b613128565b898b614783565b604051630276b64b60e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630276b64b906146da9030908590600401615bda565b600060405180830381600087803b1580156146f457600080fd5b505af1158015614708573d6000803e3d6000fd5b50505050614718848a8585613ab4565b9998505050505050505050565b6040516001600160a01b038316602482015260448101829052610fc490849063a9059cbb60e01b90606401612b2f565b60006201518082101561476757600080fd5b613c6c6201518083615d61565b60606129e484846000856148f6565b604080516001808252818301909252606091816020015b6147a2614a60565b81526020019060019003908161479a5790505090506000816000815181106147cc576147cc615b5b565b60200260200101516000019060068111156147e9576147e9615215565b908160068111156147fc576147fc615215565b81525050858160008151811061481457614814615b5b565b60200260200101516020019061ffff16908161ffff168152505060018160008151811061484357614843615b5b565b60200260200101516080019015159081151581525050818160008151811061486d5761486d615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106148b4576148b4615b5b565b602090810291909101015160c0015263ffffffff60781b607884901b16600160981b600160f01b03609886901b1660ff60f01b60f088901b1660f86001613927565b6060824710156149575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c7b565b6001600160a01b0385163b6149ae5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c7b565b600080866001600160a01b031685876040516149ca9190615f3a565b60006040518083038185875af1925050503d8060008114614a07576040519150601f19603f3d011682016040523d82523d6000602084013e614a0c565b606091505b5091509150614a1c828286614a27565b979650505050505050565b60608315614a36575081610a03565b825115614a465782518084602001fd5b8160405162461bcd60e51b8152600401610c7b9190614c35565b6040805160e081019091528060008152602001600061ffff1681526020016000815260200160008152602001600015158152602001600015158152602001606081525090565b828054614ab29061541d565b90600052602060002090601f016020900481019282614ad45760008555614b1a565b82601f10614aed57805160ff1916838001178555614b1a565b82800160010185558215614b1a579182015b82811115614b1a578251825591602001919060010190614aff565b5061313e929150614b7b565b828054828255906000526020600020908101928215614b1a579160200282015b82811115614b1a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614b46565b5b8082111561313e5760008155600101614b7c565b6020808252825182820181905260009190848201906040850190845b81811015614bd15783516001600160a01b031683529284019291840191600101614bac565b50909695505050505050565b60005b83811015614bf8578181015183820152602001614be0565b83811115610bf75750506000910152565b60008151808452614c21816020860160208601614bdd565b601f01601f19169290920160200192915050565b602081526000610a036020830184614c09565b600060208284031215614c5a57600080fd5b5035919050565b6001600160a01b0381168114614c7657600080fd5b50565b60008060408385031215614c8c57600080fd5b8235614c9781614c61565b946020939093013593505050565b6001600160581b0381168114614c7657600080fd5b63ffffffff81168114614c7657600080fd5b60008060008060808587031215614ce257600080fd5b843593506020850135614cf481614ca5565b92506040850135614d0481614c61565b91506060850135614d1481614cba565b939692955090935050565b61ffff81168114614c7657600080fd5b64ffffffffff81168114614c7657600080fd5b60008060408385031215614d5557600080fd5b8235614d6081614d1f565b91506020830135614d7081614d2f565b809150509250929050565b600080600060608486031215614d9057600080fd5b8335614d9b81614c61565b92506020840135614dab81614c61565b929592945050506040919091013590565b600080600060608486031215614dd157600080fd5b833592506020840135614de381614c61565b91506040840135614df381614cba565b809150509250925092565b600060208284031215614e1057600080fd5b8135610a0381614c61565b8015158114614c7657600080fd5b600060208284031215614e3b57600080fd5b8135610a0381614e1b565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e7f57614e7f614e46565b60405290565b60405160c081016001600160401b0381118282101715614e7f57614e7f614e46565b604051601f8201601f191681016001600160401b0381118282101715614ecf57614ecf614e46565b604052919050565b60006001600160401b03821115614ef057614ef0614e46565b50601f01601f191660200190565b600082601f830112614f0f57600080fd5b8135614f22614f1d82614ed7565b614ea7565b818152846020838601011115614f3757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614f6c57600080fd5b8535614f7781614c61565b94506020860135614f8781614c61565b93506040860135925060608601356001600160401b0380821115614faa57600080fd5b614fb689838a01614efe565b93506080880135915080821115614fcc57600080fd5b50614fd988828901614efe565b9150509295509295909350565b60008060408385031215614ff957600080fd5b823591506020830135614d7081614c61565b60008060006060848603121561502057600080fd5b833561502b81614c61565b92506020840135915060408401356001600160401b0381111561504d57600080fd5b61505986828701614efe565b9150509250925092565b60008060006060848603121561507857600080fd5b83359250602084013561508a81614c61565b91506040840135614df381614c61565b60008082840360a08112156150ae57600080fd5b833592506080601f19820112156150c457600080fd5b50604051608081018181106001600160401b03821117156150e7576150e7614e46565b60405260208401356150f881614e1b565b8152604084013561510881614e1b565b6020820152606084013561511b81614c61565b6040820152608084013561512e81614cba565b6060820152919491935090915050565b6000806040838503121561515157600080fd5b823561515c81614c61565b91506020830135614d7081614c61565b60008060008060008060a0878903121561518557600080fd5b863561519081614c61565b955060208701356151a081614c61565b9450604087013593506060870135925060808701356001600160401b03808211156151ca57600080fd5b818901915089601f8301126151de57600080fd5b8135818111156151ed57600080fd5b8a60208285010111156151ff57600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038416815260208101839052606081016005831061525257615252615215565b826040830152949350505050565b6000806000806080858703121561527657600080fd5b843561528181614c61565b93506020850135925060408501356001600160401b03808211156152a457600080fd5b6152b088838901614efe565b935060608701359150808211156152c657600080fd5b506152d387828801614efe565b91505092959194509250565b600080604083850312156152f257600080fd5b8235915060208301356001600160401b0381111561530f57600080fd5b61531b85828601614efe565b9150509250929050565b60006020828403121561533757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b038184138284138082168684048611161561537a5761537a61533e565b600160ff1b60008712828116878305891216156153995761539961533e565b600087129250878205871284841616156153b5576153b561533e565b878505871281841616156153cb576153cb61533e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b6000826153fe576153fe6153d9565b600160ff1b8214600019841416156154185761541861533e565b500590565b600181811c9082168061543157607f821691505b60208210811415611a5757634e487b7160e01b600052602260045260246000fd5b600081600019048311821515161561546c5761546c61533e565b500290565b600082615480576154806153d9565b500490565b805160ff81168114610ad757600080fd5b600080600080608085870312156154ac57600080fd5b84519350602085015192506154c360408601615485565b6060959095015193969295505050565b6000806000606084860312156154e857600080fd5b83516154f381614ca5565b925061550160208501615485565b9150604084015190509250925092565b60006001600160401b0382111561552a5761552a614e46565b5060051b60200190565b600082601f83011261554557600080fd5b81516020615555614f1d83615511565b82815260059290921b8401810191818101908684111561557457600080fd5b8286015b848110156155965761558981615485565b8352918301918301615578565b509695505050505050565b6000602082840312156155b357600080fd5b81516001600160401b03808211156155ca57600080fd5b9083019061016082860312156155df57600080fd5b6155e7614e5c565b6155f083615485565b81526155fe60208401615485565b602082015261560f60408401615485565b604082015261562060608401615485565b606082015261563160808401615485565b608082015261564260a08401615485565b60a082015261565360c08401615485565b60c082015261566460e08401615485565b60e0820152610100615677818501615485565b90820152610120838101518381111561568f57600080fd5b61569b88828701615534565b82840152505061014080840151838111156156b557600080fd5b6156c188828701615534565b918301919091525095945050505050565b6000602082840312156156e457600080fd5b81516001600160401b038111156156fa57600080fd5b8201601f8101841361570b57600080fd5b8051615719614f1d82614ed7565b81815285602083850101111561572e57600080fd5b6108d7826020830160208601614bdd565b682bb930b83832b2103360b91b815260008351615763816009850160208801614bdd565b6201020160ed1b600991840191820152835161578681600c840160208801614bdd565b01600c01949350505050565b613bb360f11b8152600083516157af816002850160208801614bdd565b601d60f91b60029184019182015283516157d0816003840160208801614bdd565b01600301949350505050565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b60008282101561587e5761587e61533e565b500390565b8151151581526020808301511515908201526040808301516001600160a01b03169082015260609182015163ffffffff169181019190915260800190565b600060a082840312156158d357600080fd5b60405160a081018181106001600160401b03821117156158f5576158f5614e46565b8060405250809150825161590881614c61565b8152602083015161591881614e1b565b60208201526040838101519082015260608301516005811061593957600080fd5b6060820152608092830151920191909152919050565b600080610140838503121561596357600080fd5b61596d84846158c1565b915061597c8460a085016158c1565b90509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060a082840312156159ce57600080fd5b60405160a081018181106001600160401b03821117156159f0576159f0614e46565b60405282516159fe81614d2f565b815260208301516001600160f81b031981168114615a1b57600080fd5b6020820152615a2c60408401615485565b60408201526060830151615a3f81614d1f565b606082015260808301516dffffffffffffffffffffffffffff1981168114615a6657600080fd5b60808201529392505050565b60006020808385031215615a8557600080fd5b82516001600160401b03811115615a9b57600080fd5b8301601f81018513615aac57600080fd5b8051615aba614f1d82615511565b81815260c09182028301840191848201919088841115615ad957600080fd5b938501935b83851015615b4f5780858a031215615af65760008081fd5b615afe614e85565b85518152868601518782015260408087015190820152606080870151908201526080808701519082015260a08087015160038110615b3c5760008081fd5b9082015283529384019391850191615ade565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215615b8657600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015615bcf57815187529582019590820190600101615bb3565b509495945050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57605f198a8403018552815160e0815160078110615c3857615c38615215565b85528188015161ffff1688860152898201518a860152888201518986015260808083015115159086015260a08083015115159086015260c091820151918501819052615c8681860183615b9f565b968801969450505090850190600101615c11565b50909a9950505050505050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57898303605f190185528151805161ffff16845286810151151587850152880151888401889052615d1b88850182615b9f565b9587019593505090850190600101615ce1565b60008219821115615d4157615d4161533e565b500190565b6000600019821415615d5a57615d5a61533e565b5060010190565b600082615d7057615d706153d9565b500690565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615dd257600080fd5b8151610a0381614c61565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090615e1890830185614c09565b82810360a08401526147188185614c09565b838152606060208201526000615e436060830185614c09565b8281036040840152615e558185614c09565b9695505050505050565b600060808284031215615e7157600080fd5b604051608081018181106001600160401b0382111715615e9357615e93614e46565b6040528251615ea181614e1b565b81526020830151615eb181614e1b565b60208201526040830151615ec481614c61565b60408201526060830151615ed781614cba565b60608201529392505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614a1c90830184614c09565b600060208284031215615f2f57600080fd5b8151610a0381614e1b565b60008251615f4c818460208701614bdd565b919091019291505056fea26469706673582212203a7f734b482cda160a7e96ede0f03e6e236489c70bae1c711713324ec8fb4dba64736f6c634300080b0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x6220 CODESIZE SUB DUP1 PUSH3 0x6220 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x172 JUMP JUMPDEST DUP2 DUP2 DUP2 DUP2 DUP2 DUP2 PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH3 0x5C JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0x66 JUMP JUMPDEST PUSH3 0x66 PUSH3 0x12C JUMP JUMPDEST PUSH3 0xCE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH3 0xF1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x101 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x80 MSTORE DUP3 AND PUSH1 0xA0 MSTORE DUP1 ISZERO PUSH3 0x117 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP PUSH3 0x1B1 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x144 ADDRESS PUSH3 0x14A PUSH1 0x20 SHL PUSH3 0x2229 OR PUSH1 0x20 SHR JUMP JUMPDEST ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x193 DUP2 PUSH3 0x159 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x1A6 DUP2 PUSH3 0x159 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x5F8C PUSH3 0x294 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x5B6 ADD MSTORE DUP2 DUP2 PUSH2 0x1125 ADD MSTORE DUP2 DUP2 PUSH2 0x25EC ADD MSTORE DUP2 DUP2 PUSH2 0x262A ADD MSTORE DUP2 DUP2 PUSH2 0x3B41 ADD MSTORE PUSH2 0x3BBF ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3DC ADD MSTORE DUP2 DUP2 PUSH2 0x7EF ADD MSTORE DUP2 DUP2 PUSH2 0xA5F ADD MSTORE DUP2 DUP2 PUSH2 0xB63 ADD MSTORE DUP2 DUP2 PUSH2 0xCC2 ADD MSTORE DUP2 DUP2 PUSH2 0xF21 ADD MSTORE DUP2 DUP2 PUSH2 0xF86 ADD MSTORE DUP2 DUP2 PUSH2 0x122D ADD MSTORE DUP2 DUP2 PUSH2 0x19A6 ADD MSTORE DUP2 DUP2 PUSH2 0x1BB1 ADD MSTORE DUP2 DUP2 PUSH2 0x1D1D ADD MSTORE DUP2 DUP2 PUSH2 0x1DA3 ADD MSTORE DUP2 DUP2 PUSH2 0x1E39 ADD MSTORE DUP2 DUP2 PUSH2 0x2009 ADD MSTORE DUP2 DUP2 PUSH2 0x2270 ADD MSTORE DUP2 DUP2 PUSH2 0x2312 ADD MSTORE DUP2 DUP2 PUSH2 0x26AF ADD MSTORE DUP2 DUP2 PUSH2 0x2780 ADD MSTORE DUP2 DUP2 PUSH2 0x350F ADD MSTORE DUP2 DUP2 PUSH2 0x35AA ADD MSTORE DUP2 DUP2 PUSH2 0x36A8 ADD MSTORE DUP2 DUP2 PUSH2 0x4558 ADD MSTORE PUSH2 0x46A3 ADD MSTORE PUSH2 0x5F8C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x959B8C3F GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCF387FED GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEE719BC8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF8EEF10F GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF8EEF10F EQ PUSH2 0x763 JUMPI DUP1 PUSH4 0xFAD8B32A EQ PUSH2 0x77A JUMPI DUP1 PUSH4 0xFC673C4F EQ PUSH2 0x78D JUMPI DUP1 PUSH4 0xFE9D9303 EQ PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xEE719BC8 EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF387FED EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xD84878B8 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD95B6371 EQ PUSH2 0x693 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0xE16695B5 EQ PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xC63D75B6 GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xCB803CEB EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x5D8 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5EB JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x959B8C3F EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x9BD9BBC6 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xA1093295 EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x51489551 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x6E553F65 GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x745D08D9 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x51489551 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x62AD1B83 EQ PUSH2 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x3D3192CB EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x48D8F98D EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x19B53D35 EQ PUSH2 0x3D7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x29CF1405 EQ PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xDB8481C EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x152B838C EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x558D500 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x6E48538 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x371 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x65 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x33C PUSH2 0x8E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4B90 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x942 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x9CB JUMP JUMPDEST PUSH2 0x384 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0xADC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0xBE9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3BA PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4D42 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D7B JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x8 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3FE PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x467 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x114C JUMP JUMPDEST PUSH2 0x319 PUSH2 0x47A CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x118B JUMP JUMPDEST PUSH2 0x487 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x11CB JUMP JUMPDEST PUSH2 0x4CD PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E29 JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x501 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F54 JUMP JUMPDEST PUSH2 0x12E4 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1320 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x550 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x563 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1419 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x576 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1477 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x500B JUMP JUMPDEST PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x168E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x16D8 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x60C CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x175F JUMP JUMPDEST PUSH2 0x319 PUSH2 0x61F CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x18EE JUMP JUMPDEST PUSH2 0x319 PUSH2 0x632 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x191B JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1A5D JUMP JUMPDEST PUSH2 0x65A PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x509A JUMP JUMPDEST PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1ACC JUMP JUMPDEST PUSH2 0x384 PUSH2 0x6A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x6B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x1B8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x705 PUSH2 0x1BA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x732 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x1C91 JUMP JUMPDEST PUSH2 0x74A PUSH2 0x745 CALLDATASIZE PUSH1 0x4 PUSH2 0x516C JUMP JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x76B PUSH2 0x2001 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x522B JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x20BC JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x5260 JUMP JUMPDEST PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x52DF JUMP JUMPDEST PUSH2 0x220A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7BD PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x7CF JUMPI PUSH2 0x7CA PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D9 PUSH2 0x1BA9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0x7E7 PUSH2 0x11A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC52C43E1 DUP5 DUP5 PUSH2 0x827 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AA SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH4 0x5F5E100 PUSH2 0x8BD DUP7 DUP5 PUSH2 0x5354 JUMP JUMPDEST PUSH2 0x8C7 SWAP2 SWAP1 PUSH2 0x53EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLT ISZERO PUSH2 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x938 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x91A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x35 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x97D SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x938 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x99F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x938 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x9AD JUMPI POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 PUSH2 0x9E4 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP PUSH2 0x9EF PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 DUP3 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA15 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xAAAE47B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xAAAE47B5 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xACA SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xAEA DUP2 DUP6 DUP6 PUSH2 0x23BD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFE PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xB12 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB1D PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBAC9E8B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xBAC9E8B1 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBD6 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x24E4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC18 JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC1C JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO JUMPDEST PUSH2 0xC84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x101 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD4CCB0ED PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD4CCB0ED SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD39 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x55A1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C69642063757272656E6379 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD97 SWAP1 PUSH1 0xFF AND PUSH5 0xFFFFFFFFFF DUP6 AND TIMESTAMP PUSH2 0x283C JUMP JUMPDEST PUSH2 0xDD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C6964206D61747572697479 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xDED PUSH2 0xFFFF DUP6 AND PUSH5 0xFFFFFFFFFF DUP6 AND PUSH1 0x1 PUSH2 0x288C JUMP JUMPDEST PUSH1 0x65 SSTORE PUSH1 0x0 PUSH2 0xDFA PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0xE07 PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE89 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xE84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x56D2 JUMP JUMPDEST PUSH2 0xEA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x8AA89 PUSH1 0xEB SHL DUP2 MSTORE POP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEBA DUP8 PUSH5 0xFFFFFFFFFF AND PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP PUSH2 0xF12 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xED2 SWAP3 SWAP2 SWAP1 PUSH2 0x573F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEF4 SWAP3 SWAP2 SWAP1 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x29EC JUMP JUMPDEST PUSH2 0xF48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xFAD JUMPI PUSH2 0xFAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST POP POP POP POP POP DUP1 ISZERO PUSH2 0xFC4 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1056 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E736665722066726F6D20746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1087 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1092 DUP6 DUP3 DUP6 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x10BE DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x10EC DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1114 PUSH1 0x1 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH2 0x1123 JUMPI DUP2 PUSH2 0x1145 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1195 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x11A1 JUMPI PUSH1 0x0 NOT PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11C1 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x11E3 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11EE PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x416A1587 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x416A1587 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x127C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x12C5 JUMPI PUSH2 0x12BD PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP2 POP PUSH2 0x12D3 JUMP JUMPDEST PUSH2 0x12CD PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO SWAP2 POP JUMP JUMPDEST PUSH2 0x12EE CALLER DUP7 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0x1319 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132B DUP3 PUSH2 0x118B JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1368 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x13585E0811195C1BDCDA5D PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1373 DUP5 PUSH2 0x1C91 JUMP JUMPDEST SWAP1 POP PUSH2 0x138C DUP5 PUSH2 0x1382 DUP4 PUSH2 0x3128 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1425 DUP5 PUSH2 0x168E JUMP JUMPDEST SWAP1 POP PUSH2 0x1434 DUP2 PUSH2 0x1382 DUP7 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD PUSH2 0x13CB JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x14DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617574686F72697A696E672073656C66206173206F706572 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x30BA37B9 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x152D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x155C JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xF4CAEB2D6CA8932A215A353D0703C326EC2D81FC68170F320EB2AB49E9DF61F9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST PUSH2 0xFC4 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP PUSH2 0x15CD PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND GT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1603 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1634 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1660 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0xAEA DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1698 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x16CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16E4 DUP6 PUSH2 0xAF4 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1701 JUMPI PUSH2 0x1701 DUP4 CALLER DUP4 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x170C DUP2 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND SWAP3 SWAP1 DUP8 AND SWAP2 CALLER SWAP2 PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x176A PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17D6 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x17F3 JUMPI PUSH2 0x17F3 DUP4 CALLER DUP8 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x17FE DUP6 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1808 PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1874 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1882 DUP4 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP5 DUP12 PUSH1 0x40 MLOAD PUSH2 0x18DC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18F8 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x1909 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB PUSH2 0x190C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1925 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x194A JUMPI PUSH1 0x0 PUSH2 0x1934 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1940 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 SWAP1 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1955 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1F0750C1 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xF83A8608 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A11 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A44 PUSH1 0x7 PUSH2 0x1A37 PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND TIMESTAMP PUSH2 0x31A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 ISZERO PUSH2 0x1A57 JUMPI PUSH1 0x0 SWAP3 POP POP POP SWAP1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C SWAP1 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A96 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1AB1 SWAP2 SWAP1 PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xFC4 DUP4 DUP3 PUSH2 0x220A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0xA03 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA2 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x1BE6 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C26 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C4A SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x4 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1C67 JUMPI PUSH2 0x1C67 PUSH2 0x5215 JUMP JUMPDEST EQ ISZERO PUSH2 0x1C7F JUMPI POP DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C9B PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x1D00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x1D10 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x1D49 JUMPI POP DUP1 DUP7 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1D55 JUMPI POP PUSH1 0x0 DUP6 SGT JUMPDEST PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x125B9D985B1A59 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB0DE2217 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB0DE2217 SWAP1 PUSH1 0x24 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E16 SWAP2 SWAP1 PUSH2 0x59BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A9B7FDB PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB536FFB6 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1EA8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5A72 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND ISZERO DUP1 ISZERO PUSH2 0x1EC8 JUMPI POP DUP1 MLOAD PUSH1 0x1 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1F37 JUMPI POP DUP3 PUSH2 0x1F35 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1EE6 JUMPI PUSH2 0x1EE6 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F05 JUMPI PUSH2 0x1F05 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F24 JUMPI PUSH2 0x1F24 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x288C JUMP JUMPDEST EQ JUMPDEST PUSH2 0x1F40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1F9C JUMPI DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0x1FD6 SWAP3 POP POP POP JUMP JUMPDEST DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP JUMPDEST PUSH2 0x1FE4 DUP12 DUP11 DUP5 DUP5 PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x203E PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A2 SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST POP DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP7 SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ ISZERO PUSH2 0x211F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207265766F6B696E672073656C66206173206F70657261746F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2173 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x219F JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x50546E66E5F44D728365DC3908C63BC5CFEEAB470722C1677E3073A6AC294AA1 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x21E2 CALLER DUP6 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x21FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x2225 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3439 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2243 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22DB SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x1BAEFC5D PUSH1 0xE2 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6EBBF174 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x237D SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SGT PUSH2 0xA03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x4D75737420536574746C65 PUSH1 0xA8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2421 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F76652066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F766520746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x2507 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH2 0x2514 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x2551 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1990D85CDA081B585D1D5C9959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x255D DUP4 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x25D5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25D0 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x25D7 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x2734 JUMPI PUSH2 0x2614 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x268A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x26AB PUSH2 0x269B PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x26A3 PUSH2 0x1A25 JUMP JUMPDEST DUP12 DUP12 DUP11 PUSH2 0x3793 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x276B64B DUP11 ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26FC SWAP3 SWAP2 SWAP1 PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x27EB JUMP JUMPDEST PUSH2 0x2749 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2766 PUSH2 0x2756 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x275E PUSH2 0x1A25 JUMP JUMPDEST DUP11 DUP10 DUP10 PUSH2 0x3978 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x541F527 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x541F5270 SWAP1 PUSH2 0x27B7 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CAA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2820 DUP7 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST PUSH2 0x282C DUP4 CALLER DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP4 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2855 DUP7 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x285F SWAP1 DUP4 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2874 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2880 DUP6 DUP8 PUSH2 0x3E4E JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFF DUP5 GT ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x28AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 DUP3 GT ISZERO PUSH2 0x28BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xFFFF000000000000 PUSH1 0x30 DUP5 SWAP1 SHL AND PUSH6 0xFFFFFFFFFF00 PUSH1 0x8 DUP5 SWAP1 SHL AND OR PUSH1 0xFF DUP3 AND OR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x290B JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2935 JUMPI DUP1 PUSH2 0x291F DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP PUSH2 0x292E SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x5471 JUMP JUMPDEST SWAP2 POP PUSH2 0x290F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x294F JUMPI PUSH2 0x294F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2979 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x29E4 JUMPI PUSH2 0x298E PUSH1 0x1 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP PUSH2 0x299B PUSH1 0xA DUP7 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x29A6 SWAP1 PUSH1 0x30 PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x29BB JUMPI PUSH2 0x29BB PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x29DD PUSH1 0xA DUP7 PUSH2 0x5471 JUMP JUMPDEST SWAP5 POP PUSH2 0x297D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2A13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST PUSH2 0xFC4 DUP4 DUP4 DUP4 PUSH2 0x4039 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x2A98 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A96 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x2B03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x4223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x29DDB589B1FB5FC7CF394961C1ADF5F8C6454761ADF795E67FE149F658ABE895 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C0B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2C85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3AD5CBC1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x75AB9782 SWAP1 PUSH2 0x2C52 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0xBF7 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2D0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20696E73756666696369656E7420616C6C6F77616E63650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x23BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0x2D93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220616D6F756E74206578636565647320 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x62616C616E6365 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0x2DCA SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6B541DDAA720DB2B10A4D0CDAC39B8D360425FC073085FAC19BC82614677987 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2E22 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0x2E6F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xB281FC8C12954D22544DB45DE3159A39272895B169A852B314F9CC762E44C53B PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F25 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x23DE29 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH3 0x23DE29 SWAP1 PUSH2 0x2F6A SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x303B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x303B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EXTCODESIZE ISZERO PUSH2 0x303B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x4D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20746F6B656E20726563697069656E7420636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20686173206E6F20696D706C656D656E74657220666F7220455243373737546F PUSH1 0x64 DUP3 ADD MSTORE PUSH13 0x1AD95B9CD49958DA5C1A595B9D PUSH1 0x9A SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0xC7B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x30A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E642066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x30FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E6420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x310B DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x3119 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x2C85 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP4 DUP6 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 MLOAD SWAP1 SWAP3 PUSH2 0x317E SWAP3 SWAP2 ADD PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 MSTORE SWAP2 POP PUSH2 0xBF7 SWAP1 DUP4 SWAP1 DUP7 SWAP1 DUP5 SWAP1 PUSH2 0x3439 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 GT PUSH2 0x31F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x10D1CE881B9BC81B585C9AD95D1CC81B1A5CDD1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x7 DUP6 GT ISZERO PUSH2 0x323C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x10D1CE881B585C9AD95D081A5B99195E08189BDD5B99 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3247 DUP5 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 JUMPDEST DUP7 DUP2 GT PUSH2 0x32A9 JUMPI PUSH1 0x0 PUSH2 0x325E DUP3 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x3268 SWAP1 DUP5 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ ISZERO PUSH2 0x3280 JUMPI POP SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 GT ISZERO PUSH2 0x3296 JUMPI POP SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST POP DUP1 PUSH2 0x32A1 DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x324C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10D1CE881B9BC81B585C9AD95D08199BDD5B99 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3346 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP DUP5 PUSH1 0x34 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x335D SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x338A SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x33A0 SWAP1 POP DUP2 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2FE5BE0146F74C5BCE36C0B80911AF6C7D86FF27E89D5CFA61FC681327954E5D DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x33E7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x345C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x346C PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3484 SWAP2 SWAP1 PUSH2 0x5E5F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636569766572206973207A65726F20616464726573730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0x34ED DUP7 DUP7 DUP7 DUP7 PUSH2 0x42F5 JUMP JUMPDEST PUSH2 0x34F5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x369C JUMPI PUSH1 0x40 MLOAD PUSH4 0xF667F897 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xF667F897 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x355B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x356F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x357D PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3615 SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP SWAP1 POP DUP1 PUSH1 0x0 SLT PUSH2 0x3661 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4E6567617469766520436173682042616C616E6365 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x366E DUP10 DUP5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3678 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH2 0x3693 DUP4 DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x368C DUP5 PUSH2 0x3128 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x449E JUMP JUMPDEST POP POP POP POP PUSH2 0x374E JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x3734 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF242432A ADDRESS DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x36E4 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3706 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5EE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x374C DUP2 PUSH1 0x40 ADD MLOAD DUP7 DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x45DA JUMP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xBF7 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x37B2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x37AA JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x37DC JUMPI PUSH2 0x37DC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x37F9 JUMPI PUSH2 0x37F9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x380C JUMPI PUSH2 0x380C PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3824 JUMPI PUSH2 0x3824 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3852 JUMPI PUSH2 0x3852 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3877 JUMPI PUSH2 0x3877 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38A2 JUMPI PUSH2 0x38A2 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38E9 JUMPI PUSH2 0x38E9 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP6 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 SHL OR OR OR PUSH1 0x0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3945 JUMPI PUSH2 0x3945 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x398F JUMPI SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x39D4 JUMPI PUSH2 0x39D4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A02 JUMPI PUSH2 0x3A02 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD SWAP2 ISZERO ISZERO SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A47 JUMPI PUSH2 0x3A47 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MSTORE DUP1 MLOAD PUSH1 0xF0 DUP7 SWAP1 SHL PUSH1 0xFF PUSH1 0xF0 SHL AND PUSH1 0x98 DUP7 SWAP1 SHL PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB AND OR PUSH1 0x78 DUP6 SWAP1 SHL PUSH4 0xFFFFFFFF PUSH1 0x78 SHL AND OR SWAP1 DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3A96 JUMPI PUSH2 0x3A96 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x3B29 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B24 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x3B2B JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x3B37 DUP4 DUP3 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP DUP4 ISZERO PUSH2 0x3BEF JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x3BEA SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP DUP8 SWAP1 POP DUP5 PUSH2 0x4725 JUMP JUMPDEST PUSH2 0x3C03 JUMP JUMPDEST PUSH2 0x3C03 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP7 DUP5 PUSH2 0x4725 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C27 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C32 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x3C3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C4C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C57 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C62 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C6C SWAP1 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0xB0C SWAP1 DUP4 PUSH2 0x586C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 EQ ISZERO PUSH2 0x3CA5 JUMPI PUSH2 0x3C8F PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C9A SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x2 EQ ISZERO PUSH2 0x3CDD JUMPI PUSH2 0x3CBC PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CC7 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x2 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x3 EQ ISZERO PUSH2 0x3D15 JUMPI PUSH2 0x3CF4 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CFF SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D0A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x4 EQ ISZERO PUSH2 0x3D4D JUMPI PUSH2 0x3D2C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D37 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D42 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x5 EQ ISZERO PUSH2 0x3D90 JUMPI PUSH2 0x3D64 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D6F SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D7A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D85 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x6 EQ ISZERO PUSH2 0x3DD3 JUMPI PUSH2 0x3DA7 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DB2 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DBD SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DC8 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0xA PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x7 EQ ISZERO PUSH2 0x3E16 JUMPI PUSH2 0x3DEA PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DF5 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E00 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E0B SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x14 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x92DCECC2D8D2C840D2DCC8CAF PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E5C DUP6 PUSH2 0x4755 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E6B PUSH3 0x15180 DUP6 PUSH2 0x5D61 JUMP JUMPDEST ISZERO PUSH2 0x3E7D JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x3E91 JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EA1 DUP4 DUP8 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3EAB SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH1 0x5A DUP2 GT PUSH2 0x3EC2 JUMPI SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x4032 SWAP1 POP JUMP JUMPDEST PUSH2 0x168 DUP2 GT PUSH2 0x3F37 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EDC DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3EE6 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3EF0 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3EFB PUSH1 0x5A DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F05 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F12 PUSH1 0x6 DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F1D SWAP1 PUSH1 0x5A PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x6 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x0 EQ SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH2 0x870 DUP2 GT PUSH2 0x3FA9 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3F51 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F5C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F66 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3F70 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F7C PUSH2 0x168 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F86 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F93 PUSH1 0x1E DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F9E SWAP1 PUSH1 0x87 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x1E DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x1DE2 DUP2 GT PUSH2 0x4026 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3FC3 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FCE SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FD9 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FE3 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3FED SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3FF9 PUSH2 0x870 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x4003 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x4010 PUSH1 0x5A DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x401B SWAP1 PUSH1 0xC3 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x5A DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x0 SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4060 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST DUP3 MLOAD PUSH2 0x4073 SWAP1 PUSH1 0x35 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP2 MLOAD PUSH2 0x4087 SWAP1 PUSH1 0x36 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x409B SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4B26 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4104 JUMPI PUSH1 0x1 PUSH1 0x38 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x40C0 JUMPI PUSH2 0x40C0 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 PUSH2 0x40FC DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x409F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAC7FBAB5F54A3CA8194167523C6753BFEB96A445279294B6125B68CCE2177054 PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0x29965A1D SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x417E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4192 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAEA199E31A596269B42CDAFD93407F14436DB6E4CAD65417994C2EB37381E05A PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP3 POP PUSH4 0x29965A1D SWAP2 POP PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4278 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4774 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xFC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4296 SWAP2 SWAP1 PUSH2 0x5F1D JUMP JUMPDEST PUSH2 0xFC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E2066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x4366 DUP2 DUP7 PUSH1 0x0 DUP8 DUP8 DUP8 PUSH2 0x2B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x43DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E20616D6F756E7420657863656564732062616C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x6E6365 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 DUP4 SUB SWAP1 SSTORE PUSH1 0x34 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x440A SWAP1 DUP5 SWAP1 PUSH2 0x586C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA78A9BE3A7B862D26933AD85FB11D80EF66B8F972D7CBBA06621D583943A4098 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x4458 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x3429 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44AC DUP5 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4524 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x451F SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4526 JUMP JUMPDEST SELFBALANCE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5E665D PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP11 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 ISZERO ISZERO PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2F332E8 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x45CD SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST POP PUSH2 0x2880 DUP4 DUP9 DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x45E8 DUP6 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4660 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4637 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x465B SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4662 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4689 PUSH2 0x4671 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x4679 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x4682 DUP12 PUSH2 0x3128 JUMP JUMPDEST DUP10 DUP12 PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x276B64B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x276B64B SWAP1 PUSH2 0x46DA SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4708 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4718 DUP5 DUP11 DUP6 DUP6 PUSH2 0x3AB4 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 LT ISZERO PUSH2 0x4767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C6C PUSH3 0x15180 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x29E4 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x48F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x47A2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x479A JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x47CC JUMPI PUSH2 0x47CC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47E9 JUMPI PUSH2 0x47E9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47FC JUMPI PUSH2 0x47FC PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4814 JUMPI PUSH2 0x4814 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4843 JUMPI PUSH2 0x4843 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x486D JUMPI PUSH2 0x486D PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x48B4 JUMPI PUSH2 0x48B4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP7 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x1 PUSH2 0x3927 JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4957 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x49AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x49CA SWAP2 SWAP1 PUSH2 0x5F3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4A07 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4A1C DUP3 DUP3 DUP7 PUSH2 0x4A27 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4A36 JUMPI POP DUP2 PUSH2 0xA03 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4A46 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x4AB2 SWAP1 PUSH2 0x541D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x4AD4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x4AED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4AFF JUMP JUMPDEST POP PUSH2 0x313E SWAP3 SWAP2 POP PUSH2 0x4B7B JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4B46 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B7C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4BD1 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4BAC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4BF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4BE0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBF7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4C21 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA03 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4C97 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4CF4 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x4D04 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4D14 DUP2 PUSH2 0x4CBA JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4D60 DUP2 PUSH2 0x4D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4D9B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DAB DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4DD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DE3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4CBA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4ECF JUMPI PUSH2 0x4ECF PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4EF0 JUMPI PUSH2 0x4EF0 PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4F0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4F22 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST PUSH2 0x4EA7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4F37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4F6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4F77 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4F87 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4FAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4FB6 DUP10 DUP4 DUP11 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FD9 DUP9 DUP3 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4FF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5020 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x502B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x504D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5059 DUP7 DUP3 DUP8 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x508A DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0xA0 DUP2 SLT ISZERO PUSH2 0x50AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x80 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x50C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x50E7 JUMPI PUSH2 0x50E7 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5108 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x511B DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH2 0x512E DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x515C DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5190 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x51A0 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x51CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x51DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x51ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x51FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD PUSH1 0x5 DUP4 LT PUSH2 0x5252 JUMPI PUSH2 0x5252 PUSH2 0x5215 JUMP JUMPDEST DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5281 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x52B0 DUP9 DUP4 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x52C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52D3 DUP8 DUP3 DUP9 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x530F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x531B DUP6 DUP3 DUP7 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 DUP5 SGT DUP3 DUP5 SGT DUP1 DUP3 AND DUP7 DUP5 DIV DUP7 GT AND ISZERO PUSH2 0x537A JUMPI PUSH2 0x537A PUSH2 0x533E JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL PUSH1 0x0 DUP8 SLT DUP3 DUP2 AND DUP8 DUP4 SDIV DUP10 SLT AND ISZERO PUSH2 0x5399 JUMPI PUSH2 0x5399 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x0 DUP8 SLT SWAP3 POP DUP8 DUP3 SDIV DUP8 SLT DUP5 DUP5 AND AND ISZERO PUSH2 0x53B5 JUMPI PUSH2 0x53B5 PUSH2 0x533E JUMP JUMPDEST DUP8 DUP6 SDIV DUP8 SLT DUP2 DUP5 AND AND ISZERO PUSH2 0x53CB JUMPI PUSH2 0x53CB PUSH2 0x533E JUMP JUMPDEST POP POP POP SWAP3 SWAP1 SWAP4 MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x53FE JUMPI PUSH2 0x53FE PUSH2 0x53D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ PUSH1 0x0 NOT DUP5 EQ AND ISZERO PUSH2 0x5418 JUMPI PUSH2 0x5418 PUSH2 0x533E JUMP JUMPDEST POP SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x5431 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1A57 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x546C JUMPI PUSH2 0x546C PUSH2 0x533E JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5480 JUMPI PUSH2 0x5480 PUSH2 0x53D9 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x54AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH2 0x54C3 PUSH1 0x40 DUP7 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x54F3 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH2 0x5501 PUSH1 0x20 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x552A JUMPI PUSH2 0x552A PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x5555 PUSH2 0x4F1D DUP4 PUSH2 0x5511 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x5574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x5596 JUMPI PUSH2 0x5589 DUP2 PUSH2 0x5485 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x5578 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x55CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH2 0x160 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x55DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55E7 PUSH2 0x4E5C JUMP JUMPDEST PUSH2 0x55F0 DUP4 PUSH2 0x5485 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x55FE PUSH1 0x20 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x560F PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x5620 PUSH1 0x60 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x5631 PUSH1 0x80 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x5642 PUSH1 0xA0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x5653 PUSH1 0xC0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x5664 PUSH1 0xE0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x5677 DUP2 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP4 DUP2 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x568F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569B DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x56B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56C1 DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x56FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x570B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5719 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x572E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH9 0x2BB930B83832B21033 PUSH1 0xB9 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x5763 DUP2 PUSH1 0x9 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH3 0x10201 PUSH1 0xED SHL PUSH1 0x9 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x5786 DUP2 PUSH1 0xC DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0xC ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x3BB3 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x57AF DUP2 PUSH1 0x2 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x2 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x57D0 DUP2 PUSH1 0x3 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0x3 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A2063616C6C6572206973206E6F7420616E206F70657261746F PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x39103337B9103437B63232B9 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x587E JUMPI PUSH2 0x587E PUSH2 0x533E JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST DUP2 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x58F5 JUMPI PUSH2 0x58F5 PUSH2 0x4E46 JUMP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP1 SWAP2 POP DUP3 MLOAD PUSH2 0x5908 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5918 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT PUSH2 0x5939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x596D DUP5 DUP5 PUSH2 0x58C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x597C DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x58C1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x59F0 JUMPI PUSH2 0x59F0 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x59FE DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5A1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x5A2C PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5A3F DUP2 PUSH2 0x4D1F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND DUP2 EQ PUSH2 0x5A66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x5AAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5ABA PUSH2 0x4F1D DUP3 PUSH2 0x5511 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0xC0 SWAP2 DUP3 MUL DUP4 ADD DUP5 ADD SWAP2 DUP5 DUP3 ADD SWAP2 SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x5AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x5B4F JUMPI DUP1 DUP6 DUP11 SUB SLT ISZERO PUSH2 0x5AF6 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AFE PUSH2 0x4E85 JUMP JUMPDEST DUP6 MLOAD DUP2 MSTORE DUP7 DUP7 ADD MLOAD DUP8 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 DUP1 DUP8 ADD MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x5B3C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP1 DUP3 ADD MSTORE DUP4 MSTORE SWAP4 DUP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH2 0x5ADE JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5B86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BCF JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5BB3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI PUSH1 0x5F NOT DUP11 DUP5 SUB ADD DUP6 MSTORE DUP2 MLOAD PUSH1 0xE0 DUP2 MLOAD PUSH1 0x7 DUP2 LT PUSH2 0x5C38 JUMPI PUSH2 0x5C38 PUSH2 0x5215 JUMP JUMPDEST DUP6 MSTORE DUP2 DUP9 ADD MLOAD PUSH2 0xFFFF AND DUP9 DUP7 ADD MSTORE DUP10 DUP3 ADD MLOAD DUP11 DUP7 ADD MSTORE DUP9 DUP3 ADD MLOAD DUP10 DUP7 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xC0 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5C86 DUP2 DUP7 ADD DUP4 PUSH2 0x5B9F JUMP JUMPDEST SWAP7 DUP9 ADD SWAP7 SWAP5 POP POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C11 JUMP JUMPDEST POP SWAP1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI DUP10 DUP4 SUB PUSH1 0x5F NOT ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH2 0xFFFF AND DUP5 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP6 ADD MSTORE DUP9 ADD MLOAD DUP9 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x5D1B DUP9 DUP6 ADD DUP3 PUSH2 0x5B9F JUMP JUMPDEST SWAP6 DUP8 ADD SWAP6 SWAP4 POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CE1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x5D41 JUMPI PUSH2 0x5D41 PUSH2 0x533E JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x5D5A JUMPI PUSH2 0x5D5A PUSH2 0x533E JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5D70 JUMPI PUSH2 0x5D70 PUSH2 0x53D9 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x5E18 SWAP1 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x4718 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5E43 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x5E55 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x5E93 JUMPI PUSH2 0x5E93 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x5EA1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5EB1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x5EC4 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5ED7 DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4A1C SWAP1 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5F2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5F4C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4BDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE PUSH32 0x734B482CDA160A7E96EDE0F03E6E236489C70BAE1C711713324EC8FB4DBA6473 PUSH16 0x6C634300080B00330000000000000000 ",
              "sourceMap": "275:144:9:-:0;;;320:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;388:14;404:5;238:9:37;249:5;915:9:38;926:5;2369:13:0;;;;;;;;;;;:48;;2405:12;;;;2404:13;2369:48;;;2385:16;:14;:16::i;:::-;2361:107;;;;-1:-1:-1;;;2361:107:0;;816:2:43;2361:107:0;;;798:21:43;855:2;835:18;;;828:30;894:34;874:18;;;867:62;-1:-1:-1;;;945:18:43;;;938:44;999:19;;2361:107:0;;;;;;;;2479:19;2502:13;;;;;;2501:14;2525:98;;;;2559:13;:20;;-1:-1:-1;;2593:19:0;;;;;2525:98;-1:-1:-1;;;;;1286:22:36;;::::1;;::::0;1318:12;::::1;;::::0;2645:66:0;;;;2695:5;2679:21;;-1:-1:-1;;2679:21:0;;;2645:66;-1:-1:-1;;1701:1:20;1806:7;:22;-1:-1:-1;275:144:9;;-1:-1:-1;;;;;;275:144:9;3037:123:0;3085:4;3109:44;3147:4;3109:29;;;;;:44;;:::i;:::-;3108:45;3101:52;;3037:123;:::o;1186:320:6:-;-1:-1:-1;;;;;1476:19:6;;:23;;;1186:320::o;14:144:43:-;-1:-1:-1;;;;;102:31:43;;92:42;;82:70;;148:1;145;138:12;82:70;14:144;:::o;163:446::-;277:6;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;386:9;380:16;405:44;443:5;405:44;:::i;:::-;518:2;503:18;;497:25;468:5;;-1:-1:-1;531:46:43;497:25;531:46;:::i;:::-;596:7;586:17;;;163:446;;;;;:::o;614:410::-;275:144:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@NotionalV2_5135": {
                  "entryPoint": null,
                  "id": 5135,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@WETH_5138": {
                  "entryPoint": null,
                  "id": 5138,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__ERC777_init_244": {
                  "entryPoint": 10732,
                  "id": 244,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@__ERC777_init_unchained_322": {
                  "entryPoint": 16441,
                  "id": 322,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1178": {
                  "entryPoint": 9149,
                  "id": 1178,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1337": {
                  "entryPoint": null,
                  "id": 1337,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_burn_1067": {
                  "entryPoint": 17141,
                  "id": 1067,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_burn_6852": {
                  "entryPoint": 13369,
                  "id": 6852,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_callOptionalReturn_3011": {
                  "entryPoint": 16931,
                  "id": 3011,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_callTokensReceived_1281": {
                  "entryPoint": 11904,
                  "id": 1281,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_callTokensToSend_1223": {
                  "entryPoint": 11110,
                  "id": 1223,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_getMaturedUnderlyingExternal_5653": {
                  "entryPoint": 8760,
                  "id": 5653,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_isConstructor_72": {
                  "entryPoint": null,
                  "id": 72,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mintInternal_6517": {
                  "entryPoint": 9444,
                  "id": 6517,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_mint_904": {
                  "entryPoint": 13040,
                  "id": 904,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_move_1133": {
                  "entryPoint": 11546,
                  "id": 1133,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_msgSender_1812": {
                  "entryPoint": null,
                  "id": 1812,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_redeemInternal_6246": {
                  "entryPoint": 12610,
                  "id": 6246,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_safeUint88_7081": {
                  "entryPoint": 12584,
                  "id": 7081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_sellfCash_6988": {
                  "entryPoint": 17882,
                  "id": 6988,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_sendTokensToReceiver_7055": {
                  "entryPoint": 15028,
                  "id": 7055,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_send_974": {
                  "entryPoint": 12357,
                  "id": 974,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_spendAllowance_1324": {
                  "entryPoint": 11406,
                  "id": 1324,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_withdrawCashToAccount_6910": {
                  "entryPoint": 17566,
                  "id": 6910,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@allowance_703": {
                  "entryPoint": null,
                  "id": 703,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_728": {
                  "entryPoint": 2780,
                  "id": 728,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@asset_5610": {
                  "entryPoint": 4357,
                  "id": 5610,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@authorizeOperator_565": {
                  "entryPoint": 5239,
                  "id": 565,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@balanceOf_389": {
                  "entryPoint": null,
                  "id": 389,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@burn_486": {
                  "entryPoint": 8714,
                  "id": 486,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@convertToAssets_5817": {
                  "entryPoint": 2507,
                  "id": 5817,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@convertToShares_5768": {
                  "entryPoint": 6427,
                  "id": 5768,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_5411": {
                  "entryPoint": null,
                  "id": 5411,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decodeERC1155Id_4415": {
                  "entryPoint": null,
                  "id": 4415,
                  "parameterSlots": 1,
                  "returnSlots": 3
                },
                "@defaultOperators_621": {
                  "entryPoint": 2272,
                  "id": 621,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@deposit_6059": {
                  "entryPoint": 4896,
                  "id": 6059,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@encodeBorrowTrade_4825": {
                  "entryPoint": 18307,
                  "id": 4825,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@encodeERC1155Id_4494": {
                  "entryPoint": 10380,
                  "id": 4494,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@encodeLendETHTrade_4712": {
                  "entryPoint": 14227,
                  "id": 4712,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@encodeLendTrade_4592": {
                  "entryPoint": 14712,
                  "id": 4592,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@functionCallWithValue_3330": {
                  "entryPoint": 18678,
                  "id": 3330,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@functionCall_3260": {
                  "entryPoint": 18292,
                  "id": 3260,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAssetToken_5522": {
                  "entryPoint": 8193,
                  "id": 5522,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@getBitNumFromMaturity_4372": {
                  "entryPoint": 15950,
                  "id": 4372,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@getCurrencyId_5382": {
                  "entryPoint": 6783,
                  "id": 5382,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getDecodedID_5401": {
                  "entryPoint": 4521,
                  "id": 5401,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getMarketIndex_4196": {
                  "entryPoint": 12711,
                  "id": 4196,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@getMarketIndex_5442": {
                  "entryPoint": 6693,
                  "id": 5442,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getMaturity_5352": {
                  "entryPoint": 7051,
                  "id": 5352,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReferenceTime_3977": {
                  "entryPoint": 15372,
                  "id": 3977,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTimeUTC0_4001": {
                  "entryPoint": 18261,
                  "id": 4001,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getToken_5559": {
                  "entryPoint": 4780,
                  "id": 5559,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@getTradedMarket_4073": {
                  "entryPoint": 15478,
                  "id": 4073,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getUnderlyingToken_5489": {
                  "entryPoint": 7081,
                  "id": 5489,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getfCashId_5336": {
                  "entryPoint": null,
                  "id": 5336,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@granularity_361": {
                  "entryPoint": null,
                  "id": 361,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@hasMatured_5366": {
                  "entryPoint": 5570,
                  "id": 5366,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@initialize_5326": {
                  "entryPoint": 3069,
                  "id": 5326,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@isContract_1560": {
                  "entryPoint": 8745,
                  "id": 1560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": null,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isOperatorFor_520": {
                  "entryPoint": 6890,
                  "id": 520,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isValidMaturity_4118": {
                  "entryPoint": 10300,
                  "id": 4118,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@maxDeposit_5837": {
                  "entryPoint": 4491,
                  "id": 5837,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@maxMint_5857": {
                  "entryPoint": 6382,
                  "id": 5857,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@maxRedeem_5887": {
                  "entryPoint": 6860,
                  "id": 5887,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@maxWithdraw_5873": {
                  "entryPoint": 6749,
                  "id": 5873,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@mintViaAsset_6337": {
                  "entryPoint": 3049,
                  "id": 6337,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@mintViaUnderlying_6359": {
                  "entryPoint": 4343,
                  "id": 6359,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@mint_6097": {
                  "entryPoint": 5145,
                  "id": 6097,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_332": {
                  "entryPoint": 2370,
                  "id": 332,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@onERC1155Received_6645": {
                  "entryPoint": 7387,
                  "id": 6645,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@operatorBurn_685": {
                  "entryPoint": 8664,
                  "id": 685,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@operatorSend_655": {
                  "entryPoint": 4836,
                  "id": 655,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@previewDeposit_5908": {
                  "entryPoint": 7313,
                  "id": 5908,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@previewMint_5929": {
                  "entryPoint": 5774,
                  "id": 5929,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@previewRedeem_6012": {
                  "entryPoint": 4555,
                  "id": 6012,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@previewWithdraw_5971": {
                  "entryPoint": 2804,
                  "id": 5971,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@redeemToAsset_6690": {
                  "entryPoint": 4428,
                  "id": 6690,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@redeemToUnderlying_6712": {
                  "entryPoint": 5082,
                  "id": 6712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@redeem_6217": {
                  "entryPoint": 5983,
                  "id": 6217,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@redeem_6668": {
                  "entryPoint": 6814,
                  "id": 6668,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@revokeOperator_610": {
                  "entryPoint": 8380,
                  "id": 610,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@safeApprove_2889": {
                  "entryPoint": 10782,
                  "id": 2889,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_2845": {
                  "entryPoint": 14171,
                  "id": 2845,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@safeTransfer_2819": {
                  "entryPoint": 18213,
                  "id": 2819,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@send_411": {
                  "entryPoint": 5540,
                  "id": 411,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@symbol_342": {
                  "entryPoint": 5525,
                  "id": 342,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_3744": {
                  "entryPoint": 10471,
                  "id": 3744,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalAssets_5718": {
                  "entryPoint": 1971,
                  "id": 5718,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_373": {
                  "entryPoint": null,
                  "id": 373,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_803": {
                  "entryPoint": 4041,
                  "id": 803,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_468": {
                  "entryPoint": 5595,
                  "id": 468,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 18983,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@withdraw_6147": {
                  "entryPoint": 5848,
                  "id": 6147,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_array_uint8_dyn_fromMemory": {
                  "entryPoint": 21812,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 20222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_Token_fromMemory": {
                  "entryPoint": 22721,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 19966,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 24000,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 20798,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 19835,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 20308,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 20844,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 19577,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 20491,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 21088,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 23154,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool": {
                  "entryPoint": 20009,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 24349,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256_fromMemory": {
                  "entryPoint": 21285,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256t_int256t_uint256_fromMemory": {
                  "entryPoint": 23409,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 22226,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_AccountContext_$4940_memory_ptr_fromMemory": {
                  "entryPoint": 22972,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_CashGroupSettings_$4929_memory_ptr_fromMemory": {
                  "entryPoint": 21921,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr_fromMemory": {
                  "entryPoint": 24159,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_Token_$4890_memory_ptrt_struct$_Token_$4890_memory_ptr_fromMemory": {
                  "entryPoint": 22863,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint16t_uint40": {
                  "entryPoint": 19778,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 19528,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": 20454,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_addresst_address": {
                  "entryPoint": 20579,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_addresst_uint32": {
                  "entryPoint": 19900,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_bytes_memory_ptr": {
                  "entryPoint": 21215,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_struct$_RedeemOpts_$7490_memory_ptr": {
                  "entryPoint": 20634,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint8t_bytes32_fromMemory": {
                  "entryPoint": 21654,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint88t_addresst_uint32": {
                  "entryPoint": 19660,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint88t_uint8t_bytes32_fromMemory": {
                  "entryPoint": 21715,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_uint8_fromMemory": {
                  "entryPoint": 21637,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes32_dyn": {
                  "entryPoint": 23455,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bool": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_string": {
                  "entryPoint": 19465,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 24378,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b_t_string_memory_ptr_t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 22335,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476_t_string_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 22418,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24029,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24291,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23514,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23722,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes32_t_address__to_t_address_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 19344,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2763_t_bool__to_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256__to_t_address_t_int256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256_t_enum$_TokenType_$4834__to_t_address_t_int256_t_uint8__fromStack_reversed": {
                  "entryPoint": 21035,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_INotionalV2_$7474__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IWETH9_$7263__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 19509,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22492,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22560,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23925,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22917,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr__to_t_struct$_RedeemOpts_$7490_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22659,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_address__to_t_uint16_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_int256_t_bool__to_t_uint16_t_int256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256_t_bool__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40_t_int256_t_uint256_t_bool__to_t_uint16_t_uint256_t_int256_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint88_t_bool__to_t_uint16_t_uint88_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24106,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint40__to_t_uint40__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 20135,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_7709": {
                  "entryPoint": 20060,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_7716": {
                  "entryPoint": 20101,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_uint8_dyn": {
                  "entryPoint": 21777,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 20183,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 23854,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_int256": {
                  "entryPoint": 21487,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 21617,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_int256": {
                  "entryPoint": 21332,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 21586,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 22636,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 19421,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 21533,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 23878,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 23905,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 21310,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 21465,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 21013,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 23387,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 20038,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 19553,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 19995,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint16": {
                  "entryPoint": 19743,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint32": {
                  "entryPoint": 19642,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint40": {
                  "entryPoint": 19759,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint88": {
                  "entryPoint": 19621,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:53730:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "115:76:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "125:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "137:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "148:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "125:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "160:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "160:25:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "84:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "95:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "106:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "347:507:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "357:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "367:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "361:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "378:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "396:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "407:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "392:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "392:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "382:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "426:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "437:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "419:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "419:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "419:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "449:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "460:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "453:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "475:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "495:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "489:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "489:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "479:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "518:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "526:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "511:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "511:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "511:22:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "542:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "553:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "564:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "549:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "549:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "542:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "576:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "594:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "602:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "590:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "590:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "580:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "614:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "623:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "618:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "682:146:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "703:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "718:6:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "712:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "712:13:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "735:3:43",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "740:1:43",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "731:3:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "731:11:43"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "744:1:43",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "727:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "727:19:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "708:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "708:39:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "696:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "696:52:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "696:52:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "761:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "772:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "777:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "768:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "768:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "761:3:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "793:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "807:6:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "815:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "803:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "803:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "793:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "644:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "647:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "641:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "641:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "655:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "657:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "666:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "669:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "662:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "662:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "657:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "637:3:43",
                                "statements": []
                              },
                              "src": "633:195:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "837:11:43",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "845:3:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "837:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "316:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "327:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "338:4:43",
                            "type": ""
                          }
                        ],
                        "src": "196:658:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "912:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "922:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "931:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "926:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "991:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1016:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "1021:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1012:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1012:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1035:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1040:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1031:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1031:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1025:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1025:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1005:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1005:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1005:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "955:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "949:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "963:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "965:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "974:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "977:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "970:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "970:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "965:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "945:3:43",
                                "statements": []
                              },
                              "src": "941:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1080:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1093:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "1098:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1089:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1089:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1107:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1082:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1082:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1069:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1072:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1066:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1066:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1063:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "890:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "895:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "900:6:43",
                            "type": ""
                          }
                        ],
                        "src": "859:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1172:208:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1182:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1196:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1196:12:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1186:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1224:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1229:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1217:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1217:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1217:19:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1271:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1278:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1267:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1267:16:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1289:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1294:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1285:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1285:14:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1301:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1245:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1245:63:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1245:63:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1317:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1332:3:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1345:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1353:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1341:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1341:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1362:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1358:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1358:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1337:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1337:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1328:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1328:39:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1369:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1324:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1324:50:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1149:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1156:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1164:3:43",
                            "type": ""
                          }
                        ],
                        "src": "1122:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1506:99:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1523:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1534:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1516:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1516:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1516:21:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1546:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1572:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1584:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1595:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1580:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1580:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1554:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1554:45:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1546:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1475:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1486:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1497:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1385:220:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1680:110:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1726:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1735:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1738:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1728:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1728:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1728:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1710:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1697:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1697:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1722:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1693:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1693:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1690:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1751:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1774:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1761:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1761:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1751:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1646:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1657:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1669:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1610:180:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1840:86:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1904:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1913:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1916:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1906:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1906:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1906:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1863:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1874:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1889:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1894:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1885:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1885:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1898:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1881:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1881:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1870:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1870:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1860:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1860:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1853:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1853:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1850:70:43"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1829:5:43",
                            "type": ""
                          }
                        ],
                        "src": "1795:131:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2018:228:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2064:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2073:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2076:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2066:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2066:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2066:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2039:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2048:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2035:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2035:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2060:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2031:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2031:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2028:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2089:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2115:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2102:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2102:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2093:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2159:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2134:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2134:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2134:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2174:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2184:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2174:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2198:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2225:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2236:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2221:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2221:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2208:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2208:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2198:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1976:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1987:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1999:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2007:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1931:315:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2292:50:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2309:3:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2328:5:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2321:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2321:13:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2314:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2314:21:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2302:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2302:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2302:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2276:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2283:3:43",
                            "type": ""
                          }
                        ],
                        "src": "2251:91:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2442:92:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2452:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2464:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2475:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2460:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2460:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2452:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2494:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2519:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2512:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2512:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2505:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2505:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2487:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2487:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2487:41:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2411:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2422:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2433:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2347:187:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2583:91:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2652:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2661:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2664:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2654:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2654:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2654:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2606:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2617:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2624:24:43",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2613:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2613:36:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2603:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2603:47:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2596:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2596:55:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2593:75:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint88",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2572:5:43",
                            "type": ""
                          }
                        ],
                        "src": "2539:135:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2723:77:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2778:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2787:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2790:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2780:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2780:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2780:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2746:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2757:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2764:10:43",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2753:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2753:22:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2743:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2743:33:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2736:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2736:41:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2733:61:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2712:5:43",
                            "type": ""
                          }
                        ],
                        "src": "2679:121:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2924:475:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2971:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2980:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2983:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2973:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2973:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2973:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2945:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2954:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2941:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2941:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2966:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2937:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2937:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2934:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2996:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3019:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3006:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3006:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2996:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3038:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3068:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3079:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3064:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3064:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3051:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3051:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3042:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3116:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint88",
                                  "nodeType": "YulIdentifier",
                                  "src": "3092:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3092:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3092:30:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3131:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3141:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3131:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3155:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3187:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3198:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3183:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3183:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3170:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3170:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3159:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3236:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3211:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3211:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3211:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3253:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3263:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3253:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3279:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3311:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3322:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3307:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3307:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3294:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3294:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3283:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3359:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "3335:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3335:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3335:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3376:17:43",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "3386:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3376:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint88t_addresst_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2866:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2877:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2889:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2897:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2905:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2913:6:43",
                            "type": ""
                          }
                        ],
                        "src": "2805:594:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3448:73:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3499:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3508:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3511:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3501:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3501:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3501:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3471:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3482:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3489:6:43",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3478:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3478:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3468:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3468:29:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3461:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3461:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3458:57:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3437:5:43",
                            "type": ""
                          }
                        ],
                        "src": "3404:117:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3570:79:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3627:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3636:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3639:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3629:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3629:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3629:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3593:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3604:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3611:12:43",
                                            "type": "",
                                            "value": "0xffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3600:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3600:24:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3590:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3590:35:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3583:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3583:43:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3580:63:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint40",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3559:5:43",
                            "type": ""
                          }
                        ],
                        "src": "3526:123:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3739:299:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3785:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3794:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3797:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3787:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3787:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3787:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3760:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3769:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3756:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3756:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3781:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3752:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3752:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3749:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3810:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3836:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3823:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3823:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3814:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3879:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint16",
                                  "nodeType": "YulIdentifier",
                                  "src": "3855:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3855:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3855:30:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3894:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3904:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3894:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3918:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3950:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3961:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3946:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3946:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3933:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3933:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3922:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3998:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint40",
                                  "nodeType": "YulIdentifier",
                                  "src": "3974:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3974:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3974:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4015:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4025:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4015:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint16t_uint40",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3697:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3708:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3720:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3728:6:43",
                            "type": ""
                          }
                        ],
                        "src": "3654:384:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4164:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4174:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4186:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4197:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4182:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4182:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4174:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4216:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4231:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4247:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4243:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4243:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4256:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4239:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4239:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4227:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4227:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4209:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4209:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4209:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_INotionalV2_$7474__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4133:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4144:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4155:4:43",
                            "type": ""
                          }
                        ],
                        "src": "4043:223:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4375:352:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4421:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4430:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4433:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4423:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4423:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4423:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4396:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4405:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4392:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4392:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4417:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4388:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4388:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "4385:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4446:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4472:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4459:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4459:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4450:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4516:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4491:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4491:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4491:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4531:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4541:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4531:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4555:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4587:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4598:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4583:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4583:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4570:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4570:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4559:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4636:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4611:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4611:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4611:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4653:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4663:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4653:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4679:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4706:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4717:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4702:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4702:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4689:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4689:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4679:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4325:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4336:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4348:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4356:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4364:6:43",
                            "type": ""
                          }
                        ],
                        "src": "4271:456:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4829:87:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4839:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4851:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4862:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4847:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4847:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4839:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4881:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4896:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4904:4:43",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4892:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4892:17:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4874:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4874:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4874:36:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4798:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4809:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4820:4:43",
                            "type": ""
                          }
                        ],
                        "src": "4732:184:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5022:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5032:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5044:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5055:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5032:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5074:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5089:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5105:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5110:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5101:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5101:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5114:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5097:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5097:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5085:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5085:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5067:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5067:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5067:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4991:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5002:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5013:4:43",
                            "type": ""
                          }
                        ],
                        "src": "4921:203:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5232:351:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5278:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5287:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5290:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5280:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5280:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5280:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5253:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5262:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5249:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5249:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5274:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5245:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5245:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5242:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5303:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5326:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5313:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5313:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5303:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5345:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5375:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5386:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5371:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5371:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5358:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5358:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5349:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5424:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5399:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5399:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5399:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5439:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5449:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5439:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5463:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5495:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5506:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5491:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5491:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5478:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5478:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5467:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5543:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5519:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5519:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5519:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5560:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5570:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5560:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5182:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5193:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5205:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5213:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5221:6:43",
                            "type": ""
                          }
                        ],
                        "src": "5129:454:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5658:177:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5704:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5713:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5716:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5706:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5706:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5706:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5679:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5688:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5675:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5675:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5700:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5671:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5671:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5668:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5729:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5755:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5742:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5742:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5733:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5799:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5774:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5774:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5774:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5814:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5824:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5814:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5624:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5635:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5647:6:43",
                            "type": ""
                          }
                        ],
                        "src": "5588:247:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5965:151:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5975:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5987:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5998:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5983:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5983:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5975:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6017:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6032:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6040:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6028:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6028:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6010:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6010:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6010:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6068:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6079:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6064:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6064:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6088:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6096:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6084:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6084:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6057:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6057:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6057:53:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5926:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5937:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5945:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5956:4:43",
                            "type": ""
                          }
                        ],
                        "src": "5840:276:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6163:76:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6217:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6226:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6229:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6219:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6219:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6219:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6186:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "6207:5:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "6200:6:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6200:13:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6193:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6193:21:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6183:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6183:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6176:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6176:40:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6173:60:43"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6152:5:43",
                            "type": ""
                          }
                        ],
                        "src": "6121:118:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6311:174:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6357:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6366:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6369:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6359:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6359:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6359:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6332:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6341:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6328:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6328:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6353:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6321:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6382:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6408:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6395:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6395:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6386:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6449:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "6427:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6427:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6427:28:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6464:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6474:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6464:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6277:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6288:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6300:6:43",
                            "type": ""
                          }
                        ],
                        "src": "6244:241:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6628:161:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6638:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6650:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6661:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6646:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6646:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6638:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6680:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6711:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6716:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6707:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6707:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6720:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6703:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6703:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6691:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6691:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6673:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6673:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6673:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6744:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6755:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6740:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6740:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6774:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6767:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6767:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "6760:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6760:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6733:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6733:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6733:50:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2763_t_bool__to_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6589:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6600:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6608:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6619:4:43",
                            "type": ""
                          }
                        ],
                        "src": "6490:299:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6826:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6843:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6850:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6855:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6846:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6846:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6836:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6836:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6836:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6883:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6886:4:43",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6876:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6876:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6876:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6907:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6910:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6900:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6900:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6900:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6794:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6972:209:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6982:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6998:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6992:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6992:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "6982:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7010:37:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7032:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7040:6:43",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7028:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7028:19:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7014:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7122:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7124:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7124:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7124:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7065:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7077:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7062:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7062:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7101:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7113:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7098:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7098:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7059:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7059:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7056:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7160:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7164:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7153:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7153:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7153:22:43"
                            }
                          ]
                        },
                        "name": "allocate_memory_7709",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "6961:6:43",
                            "type": ""
                          }
                        ],
                        "src": "6926:255:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7232:207:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7242:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7258:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7252:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7252:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7242:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7270:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7292:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7300:4:43",
                                    "type": "",
                                    "value": "0xc0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7288:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7288:17:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7274:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7380:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7382:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7382:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7382:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7323:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7335:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7320:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7320:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7359:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7371:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7356:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7356:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7317:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7317:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7314:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7418:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7422:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7411:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7411:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7411:22:43"
                            }
                          ]
                        },
                        "name": "allocate_memory_7716",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "7221:6:43",
                            "type": ""
                          }
                        ],
                        "src": "7186:253:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7489:230:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7499:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7515:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7509:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7509:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7499:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7527:58:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7549:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "7565:4:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7571:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7561:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7561:13:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7580:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "7576:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7576:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7557:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7557:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7545:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7545:40:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7531:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7660:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7662:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7662:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7662:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7603:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7615:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7600:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7600:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7639:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7651:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7636:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7636:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7597:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7597:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7594:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7698:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7702:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7691:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7691:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7691:22:43"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7469:4:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "7478:6:43",
                            "type": ""
                          }
                        ],
                        "src": "7444:275:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7781:129:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7825:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7827:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7827:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7827:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7797:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7805:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7794:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7794:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7791:56:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7856:48:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7876:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7884:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7872:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7872:15:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7893:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "7889:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7889:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7868:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7868:29:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7899:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7864:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7864:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "7856:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7761:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7772:4:43",
                            "type": ""
                          }
                        ],
                        "src": "7724:186:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7967:410:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8016:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8025:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8028:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8018:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8018:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8018:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "7995:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8003:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7991:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7991:17:43"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8010:3:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7987:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7987:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7980:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7980:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7977:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8041:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8064:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8051:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8051:20:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8045:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8080:63:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8139:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "8111:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8111:31:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8095:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8095:48:43"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8084:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8159:7:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8168:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8152:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8152:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8152:19:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8219:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8228:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8231:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8221:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8221:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8221:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8194:6:43"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8202:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8190:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8190:15:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8207:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8186:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8186:26:43"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8214:3:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8183:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8183:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "8180:55:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8261:7:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8270:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8257:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8257:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8281:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8289:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8277:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8277:17:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8296:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8244:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8244:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8244:55:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8323:7:43"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8332:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8319:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8319:16:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8337:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8315:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8315:27:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8344:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8308:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8308:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8308:38:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8355:16:43",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "8364:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8355:5:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7941:6:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7949:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "7957:5:43",
                            "type": ""
                          }
                        ],
                        "src": "7915:462:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8538:729:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8585:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8594:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8597:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8587:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8587:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8587:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8559:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8568:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8555:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8555:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8580:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8551:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8551:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "8548:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8610:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8636:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8623:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8623:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8614:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8680:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8655:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8655:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8655:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8695:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8705:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8695:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8719:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8751:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8762:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8747:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8747:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8734:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8734:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8723:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8800:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8775:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8775:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8775:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8817:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8827:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8817:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8843:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8870:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8881:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8866:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8866:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8853:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8853:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8843:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8894:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8925:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8936:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8921:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8921:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8908:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8908:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8898:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8949:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8959:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8953:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9004:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9013:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9016:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9006:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9006:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9006:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8992:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9000:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8989:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8989:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "8986:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9029:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9060:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9071:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9056:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9056:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9080:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9039:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9039:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9029:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9097:49:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9130:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9141:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9126:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9126:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9113:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9113:33:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9101:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9175:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9184:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9187:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9177:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9177:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9177:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9161:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9171:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9158:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9158:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9155:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9200:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9231:9:43"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9242:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9227:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9227:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9253:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9210:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9210:51:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9200:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8472:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8483:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8495:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8503:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8511:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8519:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8527:6:43",
                            "type": ""
                          }
                        ],
                        "src": "8382:885:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9359:228:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9405:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9414:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9417:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9407:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9407:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9407:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9380:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9389:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9376:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9401:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9372:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9372:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9369:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9430:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9453:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9440:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9440:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9430:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9472:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9502:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9513:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9498:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9498:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9485:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9485:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9476:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9551:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9526:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9526:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9526:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9566:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9576:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9566:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9317:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9328:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9340:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9348:6:43",
                            "type": ""
                          }
                        ],
                        "src": "9272:315:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9705:410:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9751:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9760:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9763:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9753:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9753:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9753:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9726:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9735:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9722:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9722:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9747:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9718:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9718:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9715:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9776:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9802:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9789:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9789:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9780:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9846:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9821:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9821:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9821:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9861:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9871:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9861:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9885:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9912:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9923:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9908:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9908:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9895:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9895:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9885:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9936:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9967:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9978:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9963:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9963:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9950:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9950:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9940:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10025:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10034:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10037:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10027:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10027:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10027:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9997:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10005:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9994:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9994:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9991:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10050:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10081:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10092:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10077:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10077:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10101:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10060:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10060:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10050:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9655:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9666:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9678:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9686:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9694:6:43",
                            "type": ""
                          }
                        ],
                        "src": "9592:523:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10236:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10246:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10258:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10269:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10254:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10254:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10246:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10288:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10303:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10319:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10324:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "10315:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10315:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10328:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "10311:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10311:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10299:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10299:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10281:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10281:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10281:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IWETH9_$7263__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10205:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10216:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10227:4:43",
                            "type": ""
                          }
                        ],
                        "src": "10120:218:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10447:352:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10493:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10502:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10505:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10495:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10495:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10495:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10468:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10477:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10464:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10464:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10489:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10460:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10460:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "10457:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10518:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10541:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10528:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10528:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10518:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10560:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10590:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10601:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10586:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10586:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10573:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10573:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10564:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10639:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10614:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10614:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10614:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10654:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10664:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10654:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10678:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10710:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10721:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10706:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10706:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10693:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10693:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10682:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10759:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10734:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10734:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10734:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10776:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10786:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10776:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10397:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10408:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10420:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10428:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10436:6:43",
                            "type": ""
                          }
                        ],
                        "src": "10343:456:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10903:89:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10913:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10925:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10936:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10921:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10921:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10913:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10955:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10970:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10978:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10966:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10966:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10948:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10948:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10948:38:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10872:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10883:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10894:4:43",
                            "type": ""
                          }
                        ],
                        "src": "10804:188:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11112:953:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11122:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11136:7:43"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11145:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "11132:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11132:23:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11126:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11180:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11189:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11192:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11182:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11182:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11182:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11171:2:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11175:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11167:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11167:12:43"
                              },
                              "nodeType": "YulIf",
                              "src": "11164:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11205:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11228:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11215:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11215:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11205:6:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11278:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11287:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11290:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11280:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11280:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11280:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11258:2:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11266:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "11262:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11262:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11254:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11254:16:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11272:4:43",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11250:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11250:27:43"
                              },
                              "nodeType": "YulIf",
                              "src": "11247:47:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11303:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11323:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11317:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11317:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11307:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11335:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11357:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11365:4:43",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11353:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11353:17:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11339:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11445:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "11447:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11447:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11447:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11388:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11400:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11385:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11385:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11424:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11436:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11421:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11421:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "11382:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11382:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "11379:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11483:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11487:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11476:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11476:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11476:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11507:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11537:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11548:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11533:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11533:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11520:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11520:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11511:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11583:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11561:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11561:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11561:28:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11605:6:43"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11613:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11598:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11598:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11598:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11628:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11660:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11671:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11656:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11656:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11643:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11643:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11632:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11706:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11684:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11684:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11684:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11734:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11742:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11730:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11730:15:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11747:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11723:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11723:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11723:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11764:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11796:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11807:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11792:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11792:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11779:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11779:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11768:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11845:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11820:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11820:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11820:33:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11873:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11881:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11869:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11869:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11886:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11862:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11862:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11862:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11903:49:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11935:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11946:4:43",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11931:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11931:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11918:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11918:34:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "11907:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11985:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11961:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11961:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11961:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12013:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12021:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12009:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12009:15:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12026:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12002:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12002:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12002:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12043:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "12053:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12043:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_struct$_RedeemOpts_$7490_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11070:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11081:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11093:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11101:6:43",
                            "type": ""
                          }
                        ],
                        "src": "10997:1068:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12157:301:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12203:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12212:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12215:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12205:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12205:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12205:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12178:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12187:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12174:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12174:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12199:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12170:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12170:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "12167:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12228:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12254:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12241:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12241:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12232:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12298:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12273:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12273:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12273:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12313:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12323:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12313:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12337:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12369:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12380:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12365:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12365:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12352:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12352:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12341:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12418:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12393:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12393:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12393:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12435:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12445:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12435:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12115:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12126:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12138:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12146:6:43",
                            "type": ""
                          }
                        ],
                        "src": "12070:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12562:95:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12572:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12584:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12595:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12580:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12580:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12572:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12614:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12629:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12637:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12625:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12625:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12607:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12607:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12607:44:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint40__to_t_uint40__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12531:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12542:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12553:4:43",
                            "type": ""
                          }
                        ],
                        "src": "12463:194:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12804:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12814:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12826:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12837:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12822:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12822:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12814:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12856:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12871:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12887:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12892:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "12883:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12883:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12896:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "12879:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12879:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12867:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12867:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12849:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12849:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12849:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12920:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12931:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12916:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12916:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12936:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12909:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12909:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12909:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256__to_t_address_t_int256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12765:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12776:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12784:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12795:4:43",
                            "type": ""
                          }
                        ],
                        "src": "12662:287:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13111:848:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13158:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13167:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13170:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13160:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13160:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13160:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13132:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13141:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13128:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13128:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13153:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13124:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13124:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13121:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13183:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13209:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13196:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13196:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13187:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13253:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13228:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13228:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13228:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13268:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13278:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13268:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13292:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13324:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13335:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13320:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13320:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13307:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13307:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13296:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13373:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13348:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13348:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13348:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13390:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13400:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13390:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13416:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13443:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13454:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13439:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13439:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13426:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13426:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "13416:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13467:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13494:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13505:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13490:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13490:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13477:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13477:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "13467:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13518:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13549:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13560:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13545:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13545:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13532:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13532:33:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13522:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13574:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13584:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13578:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13629:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13638:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13641:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13631:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13631:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13631:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13617:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13625:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13614:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13614:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13611:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13654:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13668:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13679:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13664:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13664:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "13658:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13734:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13743:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13746:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13736:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13736:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13736:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13713:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13717:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13709:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13709:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13724:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13705:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13705:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13698:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13698:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13695:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13759:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13786:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13773:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13773:16:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13763:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13816:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13825:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13828:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13818:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13818:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13818:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13804:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13812:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13801:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13801:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13798:34:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13882:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13891:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13894:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13884:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13884:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13884:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13855:2:43"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "13859:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13851:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13851:15:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13868:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13847:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13847:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13873:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13844:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13844:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13841:57:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13907:21:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13921:2:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13925:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13917:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13917:11:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "13907:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13937:16:43",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "13947:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "13937:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13037:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13048:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13060:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13068:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13076:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13084:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13092:6:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "13100:6:43",
                            "type": ""
                          }
                        ],
                        "src": "12954:1005:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14063:103:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14073:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14085:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14096:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14081:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14081:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14073:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14115:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14130:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14142:3:43",
                                            "type": "",
                                            "value": "224"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14147:10:43",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "14138:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14138:20:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14126:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14126:33:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14108:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14108:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14108:52:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14032:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14043:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14054:4:43",
                            "type": ""
                          }
                        ],
                        "src": "13964:202:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14203:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14220:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14227:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14232:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14223:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14223:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14213:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14213:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14213:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14260:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14263:4:43",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14253:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14253:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14253:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14284:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14287:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14277:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14277:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14277:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14171:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14485:244:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14495:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14507:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14518:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14503:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14503:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14495:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14537:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14552:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14568:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14573:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "14564:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14564:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14577:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "14560:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14560:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14548:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14548:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14530:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14530:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14530:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14601:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14612:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14597:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14597:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14617:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14590:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14590:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14590:34:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14658:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "14660:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14660:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14660:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14646:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14654:1:43",
                                        "type": "",
                                        "value": "5"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "14643:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14643:13:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14636:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14636:21:43"
                              },
                              "nodeType": "YulIf",
                              "src": "14633:47:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14700:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14711:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14696:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14696:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14716:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14689:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14689:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14689:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256_t_enum$_TokenType_$4834__to_t_address_t_int256_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14438:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14449:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14457:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14465:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14476:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14303:426:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14873:604:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14920:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14929:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14932:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14922:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14922:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14922:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14894:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14903:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14890:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14890:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14915:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14886:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14886:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "14883:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14945:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14971:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14958:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14958:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14949:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "15015:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14990:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14990:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14990:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15030:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15040:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15030:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15054:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15081:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15092:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15077:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15077:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15064:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15064:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15054:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15105:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15136:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15147:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15132:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15132:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15119:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15119:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15109:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15160:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15170:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15164:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15215:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15224:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15227:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15217:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15217:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15217:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15203:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15211:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15200:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15200:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15197:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15240:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15271:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15282:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15267:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15267:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15291:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15250:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15250:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "15240:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15308:48:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15341:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15352:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15337:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15337:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15324:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15324:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15312:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15385:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15394:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15397:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15387:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15387:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15387:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15371:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15381:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15368:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15368:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15365:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15410:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15441:9:43"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15452:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15437:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15437:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15463:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15420:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15420:51:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "15410:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14815:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14826:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14838:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14846:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14854:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14862:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14734:743:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15578:292:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15624:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15633:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15636:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15626:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15626:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15626:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15599:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15608:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15595:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15595:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15620:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15591:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15591:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15588:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15649:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15672:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15659:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15659:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15649:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15691:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15722:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15733:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15718:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15718:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15705:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15705:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15695:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15780:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15789:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15792:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15782:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15782:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15782:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15752:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15760:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15749:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15749:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15746:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15805:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15836:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15847:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15832:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15832:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15856:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15815:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15815:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15805:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15536:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15547:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15559:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15567:6:43",
                            "type": ""
                          }
                        ],
                        "src": "15482:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16077:298:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16087:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16099:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16110:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16095:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16095:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16087:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16130:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16145:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16153:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16141:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16141:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16123:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16123:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16123:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16181:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16192:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16177:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16177:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16201:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16209:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16197:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16197:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16170:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16170:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16170:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16243:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16254:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16239:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16239:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16259:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16232:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16232:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16232:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16286:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16297:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16282:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16282:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16302:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16275:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16275:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16275:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16329:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16340:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16325:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16325:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "16360:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "16353:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16353:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "16346:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16346:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16318:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16318:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16318:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40_t_int256_t_uint256_t_bool__to_t_uint16_t_uint256_t_int256_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16014:9:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16025:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16033:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16041:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16049:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16057:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16068:4:43",
                            "type": ""
                          }
                        ],
                        "src": "15875:500:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16460:103:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16506:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16515:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16518:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16508:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16508:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16508:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16481:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16490:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16477:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16477:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16502:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16473:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16473:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "16470:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16531:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16547:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16541:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16541:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16531:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16426:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16437:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16449:6:43",
                            "type": ""
                          }
                        ],
                        "src": "16380:183:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16600:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16617:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16624:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16629:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "16620:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16620:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16610:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16610:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16610:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16657:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16660:4:43",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16650:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16650:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16650:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16681:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16684:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "16674:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16674:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16674:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "16568:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16751:502:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16761:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16779:3:43",
                                        "type": "",
                                        "value": "255"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16784:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "16775:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16775:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16788:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "16771:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16771:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16765:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16799:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16813:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16816:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16809:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16809:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16803:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16827:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16841:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16844:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16837:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16837:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "16831:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16894:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16896:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16896:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16896:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "16866:2:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16870:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16862:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16862:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "16878:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "16885:2:43"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "16889:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "16881:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16881:10:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "16875:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16875:17:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "16858:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16858:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "16855:61:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16925:21:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16939:3:43",
                                    "type": "",
                                    "value": "255"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16944:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "16935:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16935:11:43"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "16929:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16955:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16969:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16972:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16965:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16965:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "16959:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17024:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17026:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17026:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17026:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "16994:2:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "16998:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16990:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16990:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17007:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "17015:2:43"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17019:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sdiv",
                                          "nodeType": "YulIdentifier",
                                          "src": "17010:4:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17010:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17003:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17003:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "16986:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16986:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "16983:63:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17055:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17069:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17072:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17065:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17065:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_6",
                                  "nodeType": "YulTypedName",
                                  "src": "17059:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17124:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17126:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17126:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17126:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulIdentifier",
                                        "src": "17094:2:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17098:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17090:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17090:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "17107:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "17115:2:43"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "17119:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sdiv",
                                          "nodeType": "YulIdentifier",
                                          "src": "17110:4:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17110:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17103:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17103:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17086:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17086:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17083:63:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17196:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17198:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17198:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17198:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulIdentifier",
                                        "src": "17166:2:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "17170:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17162:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17162:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "17179:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "17187:2:43"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "17191:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sdiv",
                                          "nodeType": "YulIdentifier",
                                          "src": "17182:4:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17182:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17175:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17175:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17158:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17158:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17155:63:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17227:20:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17242:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17245:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "17238:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17238:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "17227:7:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16730:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16733:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "16739:7:43",
                            "type": ""
                          }
                        ],
                        "src": "16700:553:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17290:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17307:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17314:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17319:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "17310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17310:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17300:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17300:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17300:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17347:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17350:4:43",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17340:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17340:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17340:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17371:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17374:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "17364:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17364:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17364:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "17258:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17435:148:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17458:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "17460:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17460:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17460:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17455:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17448:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17448:9:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17445:35:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17531:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17533:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17533:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17533:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "17499:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17506:3:43",
                                            "type": "",
                                            "value": "255"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17511:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "17502:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17502:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "17496:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17496:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17519:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17526:1:43",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "17522:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17522:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "17516:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17516:13:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17492:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17492:38:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17489:64:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17562:15:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17572:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17575:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sdiv",
                                  "nodeType": "YulIdentifier",
                                  "src": "17567:4:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17567:10:43"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17562:1:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17420:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17423:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17429:1:43",
                            "type": ""
                          }
                        ],
                        "src": "17390:193:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17643:325:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17653:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17667:1:43",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "17670:4:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "17663:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17663:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "17653:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17684:38:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "17714:4:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17720:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17710:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17710:12:43"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "17688:18:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17761:31:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17763:27:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "17777:6:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17785:4:43",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "17773:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17773:17:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "17763:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "17741:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17734:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17734:26:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17731:61:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17851:111:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17872:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "17879:3:43",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "17884:10:43",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "17875:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17875:20:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17865:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17865:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17865:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17916:1:43",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17919:4:43",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17909:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17909:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17909:15:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17944:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17947:4:43",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17937:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17937:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17937:15:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "17807:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "17830:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17838:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17827:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17827:14:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "17804:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17804:38:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17801:161:43"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "17623:4:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "17632:6:43",
                            "type": ""
                          }
                        ],
                        "src": "17588:380:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18025:116:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18084:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18086:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18086:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18086:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18056:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "18049:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18049:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "18042:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18042:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18064:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "18075:1:43",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "18071:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18071:6:43"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18079:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "18067:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18067:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18061:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18061:21:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18038:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18038:45:43"
                              },
                              "nodeType": "YulIf",
                              "src": "18035:71:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18115:20:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18130:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18133:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "18126:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18126:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "18115:7:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18004:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18007:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "18013:7:43",
                            "type": ""
                          }
                        ],
                        "src": "17973:168:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18192:74:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18215:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "18217:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18217:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18217:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18212:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18205:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18205:9:43"
                              },
                              "nodeType": "YulIf",
                              "src": "18202:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18246:14:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18255:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18258:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "18251:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18251:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "18246:1:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18177:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18180:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "18186:1:43",
                            "type": ""
                          }
                        ],
                        "src": "18146:120:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18488:299:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18498:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18510:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18521:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18506:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18506:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18498:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18541:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18556:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18564:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18552:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18552:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18534:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18534:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18534:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18592:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18603:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18588:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18588:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18608:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18581:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18581:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18581:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18635:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18646:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18631:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18631:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18655:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18663:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18651:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18651:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18624:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18624:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18624:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18697:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18708:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18693:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18693:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18717:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18725:10:43",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18713:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18713:23:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18686:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18686:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18686:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18757:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18768:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18753:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18753:19:43"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "18774:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18746:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18746:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18746:35:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18425:9:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18436:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18444:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18452:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18460:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18468:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18479:4:43",
                            "type": ""
                          }
                        ],
                        "src": "18271:516:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18850:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18860:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "18875:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18869:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18869:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "18860:5:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18930:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18939:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18942:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18932:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18932:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18932:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "18904:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "18915:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "18922:4:43",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "18911:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18911:16:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "18901:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18901:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18894:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18894:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "18891:55:43"
                            }
                          ]
                        },
                        "name": "abi_decode_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "18829:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18840:5:43",
                            "type": ""
                          }
                        ],
                        "src": "18792:160:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19087:258:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19134:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19143:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19146:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19136:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19136:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19136:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19108:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19117:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19104:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19104:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19129:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19100:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19100:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "19097:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19159:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19175:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19169:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19169:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "19159:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19194:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19214:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19225:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19210:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19210:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19204:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19204:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "19194:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19238:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19280:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19291:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19276:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19276:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "19248:27:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19248:47:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "19238:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19304:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19324:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19335:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19320:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19320:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19314:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19314:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19304:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint8t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19029:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19040:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19052:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19060:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19068:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "19076:6:43",
                            "type": ""
                          }
                        ],
                        "src": "18957:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19589:359:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19599:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19611:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19622:3:43",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19607:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19607:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19599:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19642:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19657:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19665:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19653:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19653:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19635:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19635:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19635:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19693:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19704:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19689:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19689:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19709:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19682:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19682:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19682:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19736:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19747:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19732:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19732:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19756:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19764:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19752:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19752:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19725:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19725:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19725:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19798:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19809:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19794:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19794:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "19818:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19826:10:43",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19814:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19814:23:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19787:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19787:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19787:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19858:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19869:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19854:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19854:19:43"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19875:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19847:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19847:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19847:35:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19902:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19913:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19898:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19898:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value5",
                                            "nodeType": "YulIdentifier",
                                            "src": "19933:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19926:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19926:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "19919:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19919:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19891:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19891:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19891:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256_t_bool__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19518:9:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "19529:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "19537:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "19545:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19553:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19561:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19569:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19580:4:43",
                            "type": ""
                          }
                        ],
                        "src": "19350:598:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20065:279:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20111:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20120:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20123:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20113:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20113:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20113:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20086:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20095:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20082:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20082:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20107:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20078:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20078:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "20075:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20136:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20155:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20149:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20149:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "20140:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "20198:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint88",
                                  "nodeType": "YulIdentifier",
                                  "src": "20174:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20174:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20174:30:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20213:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "20223:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20213:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20237:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20279:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20290:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20275:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20275:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20247:27:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20247:47:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "20237:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20303:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20323:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20334:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20319:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20319:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20313:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20313:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "20303:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint88t_uint8t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20015:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "20026:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20038:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20046:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20054:6:43",
                            "type": ""
                          }
                        ],
                        "src": "19953:391:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20523:236:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20540:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20551:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20533:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20533:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20533:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20574:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20585:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20570:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20570:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20590:2:43",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20563:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20563:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20563:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20613:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20624:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20609:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20609:18:43"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20629:34:43",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20602:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20602:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20602:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20684:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20695:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20680:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20680:18:43"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20700:16:43",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20673:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20673:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20673:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20726:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20738:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20749:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20734:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20734:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20726:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20500:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20514:4:43",
                            "type": ""
                          }
                        ],
                        "src": "20349:410:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20831:114:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20875:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "20877:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20877:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20877:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "20847:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20855:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20844:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20844:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "20841:56:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20906:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20922:1:43",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "20925:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "20918:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20918:14:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20934:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20914:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20914:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "20906:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_uint8_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "20811:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "20822:4:43",
                            "type": ""
                          }
                        ],
                        "src": "20764:181:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21023:604:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21072:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21081:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21084:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21074:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21074:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21074:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "21051:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "21059:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21047:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21047:17:43"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "21066:3:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21043:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21043:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21036:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21036:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21033:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21097:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21113:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21107:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21107:13:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21101:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21129:14:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21139:4:43",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "21133:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21152:69:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21217:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_uint8_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "21179:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21179:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "21163:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21163:58:43"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "21156:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21230:16:43",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "21243:3:43"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21234:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "21262:3:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21267:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21255:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21255:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21255:15:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21279:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "21290:3:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21295:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21286:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21286:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "21279:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21307:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "21329:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "21341:1:43",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "21344:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "21337:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21337:10:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21325:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21325:23:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21350:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21321:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21321:32:43"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "21311:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21381:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21390:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21393:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21383:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21383:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21383:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21368:6:43"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "21376:3:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21365:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21365:15:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21362:35:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21406:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21421:6:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21429:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21417:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21417:15:43"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "21410:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21497:101:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "21518:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "21551:3:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_uint8_fromMemory",
                                            "nodeType": "YulIdentifier",
                                            "src": "21523:27:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21523:32:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21511:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21511:45:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21511:45:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21569:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "21580:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "21585:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21576:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21576:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "21569:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "21452:3:43"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21457:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21449:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21449:15:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "21465:23:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21467:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "21478:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "21483:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21474:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21474:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "21467:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "21445:3:43",
                                "statements": []
                              },
                              "src": "21441:157:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21607:14:43",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "21616:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "21607:5:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint8_dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "20997:6:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "21005:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "21013:5:43",
                            "type": ""
                          }
                        ],
                        "src": "20950:677:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21748:1439:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21794:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21803:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21806:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21796:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21796:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21796:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "21769:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21778:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "21765:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21765:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21790:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21761:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21761:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21758:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21819:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21839:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21833:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21833:16:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "21823:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21858:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21868:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21862:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21913:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21922:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21925:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21915:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21915:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21915:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21901:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21909:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21898:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21898:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21895:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21938:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21952:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21963:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21948:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21948:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "21942:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22012:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22021:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22024:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22014:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22014:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22014:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "21990:7:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "21999:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "21986:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21986:16:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22004:6:43",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21982:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21982:29:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21979:49:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22037:35:43",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_7709",
                                  "nodeType": "YulIdentifier",
                                  "src": "22050:20:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22050:22:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "22041:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22088:5:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22123:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22095:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22095:31:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22081:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22081:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22081:46:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22147:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22154:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22143:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22143:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22191:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22195:2:43",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22187:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22187:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22159:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22159:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22136:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22136:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22136:64:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22220:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22227:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22216:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22216:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22264:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22268:2:43",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22260:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22260:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22232:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22232:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22209:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22209:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22209:64:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22293:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22300:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22289:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22289:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22337:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22341:2:43",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22333:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22333:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22305:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22305:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22282:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22282:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22282:64:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22366:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22373:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22362:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22362:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22411:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22415:3:43",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22407:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22407:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22379:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22379:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22355:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22355:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22355:66:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22441:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22448:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22437:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22437:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22486:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22490:3:43",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22482:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22482:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22454:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22454:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22430:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22430:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22430:66:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22516:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22523:3:43",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22512:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22512:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22561:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22565:3:43",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22557:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22557:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22529:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22529:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22505:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22505:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22505:66:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22591:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22598:3:43",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22587:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22587:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22636:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22640:3:43",
                                            "type": "",
                                            "value": "224"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22632:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22632:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22604:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22604:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22580:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22580:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22580:66:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22655:13:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22665:3:43",
                                "type": "",
                                "value": "256"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "22659:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22688:5:43"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "22695:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22684:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22684:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22732:2:43"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "22736:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22728:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22728:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22700:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22700:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22677:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22677:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22677:64:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22750:13:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22760:3:43",
                                "type": "",
                                "value": "288"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "22754:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22772:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22798:2:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "22802:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22794:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22794:11:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22788:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22788:18:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22776:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22835:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22844:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22847:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22837:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22837:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22837:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22821:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22831:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22818:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22818:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "22815:36:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22871:5:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "22878:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22867:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22867:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22925:2:43"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "22929:8:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22921:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22921:17:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22940:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_uint8_dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22883:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22883:65:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22860:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22860:89:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22860:89:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22958:13:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22968:3:43",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "22962:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22980:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23006:2:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23010:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23002:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23002:11:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22996:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22996:18:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22984:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23043:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23052:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23055:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23045:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23045:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23045:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "23029:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23039:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23026:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23026:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "23023:36:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "23079:5:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23086:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23075:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23075:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "23133:2:43"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "23137:8:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "23129:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23129:17:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "23148:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_uint8_dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "23091:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23091:65:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23068:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23068:89:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23068:89:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23166:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "23176:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "23166:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_CashGroupSettings_$4929_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21714:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "21725:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21737:6:43",
                            "type": ""
                          }
                        ],
                        "src": "21632:1555:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23366:166:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23383:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23394:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23376:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23376:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23376:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23417:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23428:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23413:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23413:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23433:2:43",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23406:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23406:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23406:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23456:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23467:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23452:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23452:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c69642063757272656e6379",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23472:18:43",
                                    "type": "",
                                    "value": "Invalid currency"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23445:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23445:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23445:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23500:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23512:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23523:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23508:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23508:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23500:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23343:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23357:4:43",
                            "type": ""
                          }
                        ],
                        "src": "23192:340:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23711:166:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23728:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23739:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23721:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23721:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23721:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23762:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23773:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23758:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23758:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23778:2:43",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23751:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23751:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23751:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23801:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23812:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23797:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23797:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c6964206d61747572697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23817:18:43",
                                    "type": "",
                                    "value": "Invalid maturity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23790:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23790:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23790:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23845:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23857:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23868:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23853:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23853:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23845:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23688:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23702:4:43",
                            "type": ""
                          }
                        ],
                        "src": "23537:340:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23973:544:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24019:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24028:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24031:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24021:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24021:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24021:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "23994:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24003:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "23990:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23990:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24015:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23986:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23986:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "23983:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24044:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24064:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24058:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24058:16:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "24048:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24117:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24126:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24129:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24119:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24119:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24119:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "24089:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24097:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24086:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24086:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "24083:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24142:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24156:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "24167:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24152:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24152:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24146:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24222:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24231:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24234:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24224:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24224:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24224:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "24201:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24205:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24197:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24197:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "24212:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24193:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24193:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "24186:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24186:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "24183:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24247:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24263:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24257:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24257:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "24251:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24275:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "24332:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "24304:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24304:31:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24288:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24288:48:43"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "24279:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "24352:5:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24359:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24345:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24345:17:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24345:17:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24408:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24417:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24420:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24410:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24410:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24410:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "24385:2:43"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "24389:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24381:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24381:11:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24394:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24377:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24377:20:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "24399:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24374:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24374:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "24371:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "24459:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24463:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24455:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24455:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "24472:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24479:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24468:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24468:14:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24484:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24433:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24433:54:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24433:54:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24496:15:43",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "24506:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "24496:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23939:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "23950:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23962:6:43",
                            "type": ""
                          }
                        ],
                        "src": "23882:635:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24911:367:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24928:3:43"
                                  },
                                  {
                                    "hexValue": "577261707065642066",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24933:11:43",
                                    "type": "",
                                    "value": "Wrapped f"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24921:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24921:24:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24921:24:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24954:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24974:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24968:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24968:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "24958:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25016:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25024:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25012:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25012:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "25035:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25040:1:43",
                                        "type": "",
                                        "value": "9"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25031:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25031:11:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25044:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24990:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24990:61:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24990:61:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25060:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25074:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25079:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25070:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25070:16:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25064:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25106:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25110:1:43",
                                        "type": "",
                                        "value": "9"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25102:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25102:10:43"
                                  },
                                  {
                                    "hexValue": "204020",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25114:5:43",
                                    "type": "",
                                    "value": " @ "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25095:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25095:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25095:25:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25129:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25151:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25145:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25145:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25133:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25193:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25201:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25189:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25189:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25212:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25216:2:43",
                                        "type": "",
                                        "value": "12"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25208:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25208:11:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25221:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25167:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25167:63:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25167:63:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25239:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25254:2:43"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25258:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25250:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25250:17:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25269:2:43",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25246:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25246:26:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25239:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b_t_string_memory_ptr_t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24879:3:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24884:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24892:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "24903:3:43",
                            "type": ""
                          }
                        ],
                        "src": "24522:756:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25672:356:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25689:3:43"
                                  },
                                  {
                                    "hexValue": "7766",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25694:4:43",
                                    "type": "",
                                    "value": "wf"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25682:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25682:17:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25682:17:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25708:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25728:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25722:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25722:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25712:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25770:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25778:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25766:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25766:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "25789:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25794:1:43",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25785:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25785:11:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25798:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25744:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25744:61:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25744:61:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25814:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25828:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25833:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25824:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25824:16:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25818:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25860:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25864:1:43",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25856:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25856:10:43"
                                  },
                                  {
                                    "hexValue": "3a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25868:3:43",
                                    "type": "",
                                    "value": ":"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25849:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25849:23:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25849:23:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25881:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25903:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25897:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25897:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25885:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25945:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25953:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25941:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25941:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25964:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25968:1:43",
                                        "type": "",
                                        "value": "3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25960:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25960:10:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25972:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25919:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25919:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25919:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25990:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "26005:2:43"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "26009:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26001:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26001:17:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26020:1:43",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25997:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25997:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25990:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476_t_string_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25640:3:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25645:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25653:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25664:3:43",
                            "type": ""
                          }
                        ],
                        "src": "25283:745:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26207:226:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26224:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26235:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26217:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26217:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26217:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26258:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26269:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26254:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26254:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26274:2:43",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26247:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26247:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26247:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26297:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26308:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26293:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26293:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26313:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26286:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26286:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26286:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26368:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26379:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26364:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26364:18:43"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26384:6:43",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26357:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26357:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26357:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26400:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26412:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26423:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26408:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26408:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26400:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26184:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26198:4:43",
                            "type": ""
                          }
                        ],
                        "src": "26033:400:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26612:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26629:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26640:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26622:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26622:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26622:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26663:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26674:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26659:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26659:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26679:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26652:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26652:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26652:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26702:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26713:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26698:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26698:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e736665722066726f6d20746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26718:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer from the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26691:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26691:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26691:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26773:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26784:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26769:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26769:18:43"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26789:8:43",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26762:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26762:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26762:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26807:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26819:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26830:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26815:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26815:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26807:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26589:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26603:4:43",
                            "type": ""
                          }
                        ],
                        "src": "26438:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27019:234:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27036:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27047:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27029:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27029:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27029:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27070:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27081:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27066:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27066:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27086:2:43",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27059:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27059:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27059:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27109:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27120:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27105:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27105:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27125:34:43",
                                    "type": "",
                                    "value": "ERC777: caller is not an operato"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27098:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27098:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27098:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27180:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27191:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27176:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27176:18:43"
                                  },
                                  {
                                    "hexValue": "7220666f7220686f6c646572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27196:14:43",
                                    "type": "",
                                    "value": "r for holder"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27169:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27169:42:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27169:42:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27220:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27232:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27243:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27228:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27228:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27220:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26996:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27010:4:43",
                            "type": ""
                          }
                        ],
                        "src": "26845:408:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27432:161:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27449:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27460:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27442:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27442:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27442:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27483:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27494:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27479:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27479:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27499:2:43",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27472:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27472:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27472:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27522:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27533:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27518:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27518:18:43"
                                  },
                                  {
                                    "hexValue": "4d6178204465706f736974",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27538:13:43",
                                    "type": "",
                                    "value": "Max Deposit"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27511:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27511:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27511:41:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27561:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27573:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27584:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27569:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27569:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27561:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27409:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27423:4:43",
                            "type": ""
                          }
                        ],
                        "src": "27258:335:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27727:119:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27737:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27749:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27760:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27745:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27745:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27737:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27779:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "27790:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27772:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27772:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27772:25:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27817:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27828:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27813:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27813:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27833:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27806:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27806:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27806:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27688:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "27699:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27707:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27718:4:43",
                            "type": ""
                          }
                        ],
                        "src": "27598:248:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28025:226:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28042:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28053:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28035:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28035:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28035:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28076:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28087:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28072:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28072:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28092:2:43",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28065:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28065:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28065:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28115:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28126:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28111:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28111:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617574686f72697a696e672073656c66206173206f706572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28131:34:43",
                                    "type": "",
                                    "value": "ERC777: authorizing self as oper"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28104:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28104:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28104:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28186:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28197:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28182:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28182:18:43"
                                  },
                                  {
                                    "hexValue": "61746f72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28202:6:43",
                                    "type": "",
                                    "value": "ator"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28175:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28175:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28175:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28218:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28230:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28241:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28226:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28226:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28218:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28002:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28016:4:43",
                            "type": ""
                          }
                        ],
                        "src": "27851:400:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28430:156:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28447:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28458:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28440:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28440:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28440:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28481:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28492:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28477:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28477:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28497:1:43",
                                    "type": "",
                                    "value": "7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28470:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28470:29:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28470:29:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28519:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28530:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28515:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28515:18:43"
                                  },
                                  {
                                    "hexValue": "4d617475726564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28535:9:43",
                                    "type": "",
                                    "value": "Matured"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28508:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28508:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28508:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28554:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28566:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28577:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28562:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28562:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28554:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28407:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28421:4:43",
                            "type": ""
                          }
                        ],
                        "src": "28256:330:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28672:103:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28718:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28727:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28730:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28720:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28720:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28720:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "28693:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28702:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28689:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28689:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28714:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28685:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28685:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "28682:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28743:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28759:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "28753:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28753:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "28743:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28638:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "28649:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "28661:6:43",
                            "type": ""
                          }
                        ],
                        "src": "28591:184:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28829:76:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28851:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "28853:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28853:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28853:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "28845:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "28848:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28842:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28842:8:43"
                              },
                              "nodeType": "YulIf",
                              "src": "28839:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28882:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "28894:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "28897:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "28890:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28890:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "28882:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "28811:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "28814:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "28820:4:43",
                            "type": ""
                          }
                        ],
                        "src": "28780:125:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29067:348:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29077:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29089:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29100:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29085:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29085:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29077:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29120:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "29151:6:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "29145:5:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29145:13:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "29138:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29138:21:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "29131:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29131:29:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29113:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29113:48:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29113:48:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29181:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29192:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29177:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29177:20:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29223:6:43"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "29231:4:43",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "29219:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "29219:17:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "29213:5:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29213:24:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "29206:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29206:32:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "29199:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29199:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29170:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29170:70:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29170:70:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29260:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29271:4:43",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29256:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29256:20:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "29292:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29300:4:43",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "29288:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29288:17:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "29282:5:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29282:24:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29316:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29321:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "29312:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29312:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29325:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "29308:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29308:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29278:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29278:50:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29249:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29249:80:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29249:80:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29349:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29360:4:43",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29345:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29345:20:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "29381:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29389:4:43",
                                                "type": "",
                                                "value": "0x60"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "29377:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29377:17:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "29371:5:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29371:24:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29397:10:43",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29367:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29367:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29338:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29338:71:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29338:71:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr__to_t_struct$_RedeemOpts_$7490_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29036:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29047:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29058:4:43",
                            "type": ""
                          }
                        ],
                        "src": "28910:505:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29493:798:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29537:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29546:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29549:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29539:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29539:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29539:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "29514:3:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29519:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "29510:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29510:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29531:4:43",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29506:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29506:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "29503:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29562:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29582:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29576:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29576:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29566:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29594:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29616:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29624:4:43",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29612:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29612:17:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29598:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29704:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "29706:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29706:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29706:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29647:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29659:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29644:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29644:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29683:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29695:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29680:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29680:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "29641:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29641:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "29638:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29742:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29746:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29735:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29735:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29735:22:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29766:15:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "29775:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "29766:5:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29790:31:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29811:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29805:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29805:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29794:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29855:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "29830:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29830:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29830:33:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29879:6:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29887:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29872:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29872:23:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29872:23:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29904:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29929:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29940:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29925:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29925:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29919:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29919:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "29908:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "29975:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "29953:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29953:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29953:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30003:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30011:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29999:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29999:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "30016:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29992:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29992:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29992:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30044:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30052:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30040:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30040:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "30067:9:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30078:2:43",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30063:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30063:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "30057:5:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30057:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30033:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30033:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30033:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30092:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30117:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30128:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30113:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30113:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30107:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30107:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "30096:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30167:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30176:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30179:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30169:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30169:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30169:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "30154:7:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30163:1:43",
                                        "type": "",
                                        "value": "5"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30151:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30151:14:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30144:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30144:22:43"
                              },
                              "nodeType": "YulIf",
                              "src": "30141:42:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30203:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30211:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30199:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30199:15:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "30216:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30192:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30192:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30192:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30244:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30252:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30240:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30240:16:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "30268:9:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30279:3:43",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30264:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30264:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "30258:5:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30258:26:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30233:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30233:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30233:52:43"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_Token_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29464:9:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "29475:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "29483:5:43",
                            "type": ""
                          }
                        ],
                        "src": "29420:871:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30440:225:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30487:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30496:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30499:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30489:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30489:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30489:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "30461:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30470:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30457:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30457:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30482:3:43",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30453:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30453:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "30450:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30512:64:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30557:9:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "30568:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_Token_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "30522:34:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30522:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "30512:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30585:74:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30634:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30645:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30630:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30630:19:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "30651:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_Token_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "30595:34:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30595:64:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "30585:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Token_$4890_memory_ptrt_struct$_Token_$4890_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30398:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "30409:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30421:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "30429:6:43",
                            "type": ""
                          }
                        ],
                        "src": "30296:369:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30844:181:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30861:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30872:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30854:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30854:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30854:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30895:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30906:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30891:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30891:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30911:2:43",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30884:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30884:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30884:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30934:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30945:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30930:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30930:18:43"
                                  },
                                  {
                                    "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30950:33:43",
                                    "type": "",
                                    "value": "ReentrancyGuard: reentrant call"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30923:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30923:61:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30923:61:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30993:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31005:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31016:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31001:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31001:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30993:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30821:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30835:4:43",
                            "type": ""
                          }
                        ],
                        "src": "30670:355:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31204:156:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31221:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31232:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31214:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31214:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31214:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31255:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31266:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31251:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31251:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31271:1:43",
                                    "type": "",
                                    "value": "7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31244:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31244:29:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31244:29:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31293:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31304:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31289:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31289:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c6964",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31309:9:43",
                                    "type": "",
                                    "value": "Invalid"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31282:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31282:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31282:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31328:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31340:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31351:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31336:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31336:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31328:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31181:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31195:4:43",
                            "type": ""
                          }
                        ],
                        "src": "31030:330:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31478:974:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31525:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31534:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31537:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31527:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31527:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31527:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "31499:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31508:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31495:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31520:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31491:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31491:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "31488:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31550:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31570:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31564:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31564:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "31554:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31582:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31604:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31612:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31600:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31600:16:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "31586:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31691:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "31693:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31693:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31693:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31634:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31646:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31631:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31631:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31670:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31682:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31667:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31667:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "31628:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31628:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "31625:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31729:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31733:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31722:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31722:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31722:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31753:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31772:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31766:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31766:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "31757:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31815:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint40",
                                  "nodeType": "YulIdentifier",
                                  "src": "31791:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31791:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31791:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31837:6:43"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31845:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31830:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31830:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31830:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31860:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31885:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31896:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31881:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31881:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31875:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31875:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31864:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31961:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31970:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31973:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31963:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31963:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31963:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31922:7:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "31935:7:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31948:3:43",
                                                "type": "",
                                                "value": "248"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31953:3:43",
                                                "type": "",
                                                "value": "255"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "31944:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31944:13:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "31931:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31931:27:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31919:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31919:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31912:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31912:48:43"
                              },
                              "nodeType": "YulIf",
                              "src": "31909:68:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31997:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32005:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31993:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31993:15:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "32010:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31986:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31986:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31986:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32038:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32046:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32034:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32034:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "32083:9:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32094:2:43",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32079:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32079:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "32051:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32051:47:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32027:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32027:72:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32027:72:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32108:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32133:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32144:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32129:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32129:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32123:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32123:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "32112:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32181:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint16",
                                  "nodeType": "YulIdentifier",
                                  "src": "32157:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32157:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32157:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32209:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32217:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32205:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32205:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32222:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32198:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32198:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32198:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32239:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32264:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32275:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32260:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32260:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32254:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32254:26:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "32243:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32363:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32372:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32375:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32365:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32365:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32365:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "32302:7:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "32315:7:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32328:30:43",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "32324:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32324:35:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "32311:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32311:49:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "32299:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32299:62:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32292:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32292:70:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32289:90:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32399:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32407:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32395:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32395:16:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "32413:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32388:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32388:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32388:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32430:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "32440:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "32430:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_AccountContext_$4940_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31444:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "31455:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31467:6:43",
                            "type": ""
                          }
                        ],
                        "src": "31365:1087:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32595:1552:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32605:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "32615:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "32609:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32662:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32671:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32674:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32664:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32664:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32664:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "32637:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32646:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "32633:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32633:23:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "32658:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32629:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32629:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32626:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32687:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32707:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32701:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32701:16:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "32691:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32760:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32769:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32772:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32762:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32762:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32762:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "32732:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32740:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32729:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32729:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32726:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32785:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32799:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "32810:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32795:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32795:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "32789:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32865:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32874:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32877:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32867:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32867:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32867:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "32844:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32848:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32840:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32840:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "32855:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32836:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32836:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32829:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32829:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32826:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32890:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32906:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32900:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32900:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "32894:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32918:69:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "32983:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_uint8_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "32945:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32945:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "32929:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32929:58:43"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "32922:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32996:16:43",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "33009:3:43"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33000:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "33028:3:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "33033:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33021:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33021:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33021:15:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33045:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "33056:3:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33061:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33052:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33052:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "33045:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33073:14:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33083:4:43",
                                "type": "",
                                "value": "0xc0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "33077:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33096:43:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "33118:2:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "33126:2:43"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "33130:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "33122:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33122:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33114:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33114:20:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33136:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33110:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33110:29:43"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "33100:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33171:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33180:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33183:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33173:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33173:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33173:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "33154:6:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "33162:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33151:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33151:19:43"
                              },
                              "nodeType": "YulIf",
                              "src": "33148:39:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33196:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "33211:2:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33215:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33207:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33207:11:43"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "33200:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33283:834:43",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "33339:74:43",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "33357:11:43",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33367:1:43",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulTypedName",
                                              "src": "33361:2:43",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "33392:2:43"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "33396:2:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "33385:6:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33385:14:43"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "33385:14:43"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "33308:7:43"
                                            },
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "33317:3:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "33304:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33304:17:43"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "33323:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "33300:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33300:26:43"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "33297:116:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33426:35:43",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_7716",
                                        "nodeType": "YulIdentifier",
                                        "src": "33439:20:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33439:22:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "33430:5:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "33481:5:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "33494:3:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33488:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33488:10:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33474:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33474:25:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33474:25:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33523:5:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "33530:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33519:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33519:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33545:3:43"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33550:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33541:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33541:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33535:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33535:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33512:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33512:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33512:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33568:12:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33578:2:43",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "33572:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33604:5:43"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "33611:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33600:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33600:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33626:3:43"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33631:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33622:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33622:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33616:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33616:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33593:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33593:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33593:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33649:12:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33659:2:43",
                                      "type": "",
                                      "value": "96"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "33653:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33685:5:43"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "33692:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33681:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33681:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33707:3:43"
                                                },
                                                {
                                                  "name": "_7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33712:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33703:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33703:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33697:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33697:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33674:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33674:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33674:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33730:13:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33740:3:43",
                                      "type": "",
                                      "value": "128"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "33734:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33767:5:43"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "33774:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33763:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33763:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33789:3:43"
                                                },
                                                {
                                                  "name": "_8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33794:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33785:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33785:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33779:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33779:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33756:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33756:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33756:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33812:13:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33822:3:43",
                                      "type": "",
                                      "value": "160"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "33816:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33838:34:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "33863:3:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "33868:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33859:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33859:12:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "33853:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33853:19:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "33842:7:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "33923:77:43",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "33941:12:43",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33952:1:43",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_10",
                                              "nodeType": "YulTypedName",
                                              "src": "33945:3:43",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "33977:3:43"
                                              },
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "33982:3:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "33970:6:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33970:16:43"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "33970:16:43"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "33898:7:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "33907:1:43",
                                              "type": "",
                                              "value": "3"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "33895:2:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33895:14:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "33888:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33888:22:43"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "33885:115:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "34024:5:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "34031:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34020:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34020:14:43"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34036:7:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34013:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34013:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34013:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "34064:3:43"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "34069:5:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34057:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34057:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34057:18:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34088:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "34099:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34104:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34095:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34095:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "34088:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "33238:3:43"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "33243:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33235:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33235:15:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "33251:23:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "33253:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "33264:3:43"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "33269:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "33260:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33260:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "33253:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "33231:3:43",
                                "statements": []
                              },
                              "src": "33227:890:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34126:15:43",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "34136:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "34126:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32561:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "32572:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "32584:6:43",
                            "type": ""
                          }
                        ],
                        "src": "32457:1690:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34184:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34201:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34208:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34213:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "34204:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34204:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34194:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34194:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34194:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34241:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34244:4:43",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34234:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34234:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34234:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34265:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34268:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "34258:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34258:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34258:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "34152:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34458:223:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34475:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34486:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34468:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34468:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34468:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34509:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34520:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34505:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34505:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34525:2:43",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34498:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34498:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34498:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34548:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34559:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34544:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34544:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207265766f6b696e672073656c66206173206f70657261746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34564:34:43",
                                    "type": "",
                                    "value": "ERC777: revoking self as operato"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34537:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34537:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34537:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34619:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34630:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34615:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34615:18:43"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34635:3:43",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34608:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34608:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34608:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34648:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34660:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34671:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34656:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34656:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34648:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34435:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34449:4:43",
                            "type": ""
                          }
                        ],
                        "src": "34284:397:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34813:158:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "34823:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34835:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34846:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34831:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34831:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34823:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34865:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "34880:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34888:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34876:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34876:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34858:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34858:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34858:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34916:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34927:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34912:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34912:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "34936:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "34952:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "34957:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "34948:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "34948:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "34961:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "34944:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "34944:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34932:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34932:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34905:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34905:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34905:60:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_address__to_t_uint16_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34774:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "34785:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34793:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34804:4:43",
                            "type": ""
                          }
                        ],
                        "src": "34686:285:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35089:191:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35135:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35144:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35147:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "35137:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35137:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35137:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "35110:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35119:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "35106:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35106:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35131:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35102:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35102:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "35099:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35160:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35176:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35170:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35170:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "35160:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35195:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35215:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35226:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35211:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35211:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35205:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35205:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "35195:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35239:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35259:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35270:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35255:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35255:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35249:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35249:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "35239:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256t_int256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35039:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "35050:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35062:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35070:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35078:6:43",
                            "type": ""
                          }
                        ],
                        "src": "34976:304:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35432:191:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35442:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35454:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35465:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35450:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35450:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35442:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35484:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "35499:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35507:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35495:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35477:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35477:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35477:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35535:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35546:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35531:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35531:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35551:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35524:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35524:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35524:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35578:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35589:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35574:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35574:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "35608:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "35601:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35601:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "35594:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35594:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35567:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35567:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35567:50:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_int256_t_bool__to_t_uint16_t_int256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35385:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35396:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35404:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35412:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35423:4:43",
                            "type": ""
                          }
                        ],
                        "src": "35285:338:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35802:161:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35819:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35830:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35812:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35812:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35812:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35853:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35864:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35849:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35849:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35869:2:43",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35842:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35842:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35842:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35892:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35903:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35888:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35888:18:43"
                                  },
                                  {
                                    "hexValue": "4d75737420536574746c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35908:13:43",
                                    "type": "",
                                    "value": "Must Settle"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35881:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35881:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35881:41:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35931:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35943:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35954:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35939:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35939:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35931:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35779:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35793:4:43",
                            "type": ""
                          }
                        ],
                        "src": "35628:335:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36142:227:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36159:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36170:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36152:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36152:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36152:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36193:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36204:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36189:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36189:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36209:2:43",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36182:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36182:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36182:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36232:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36243:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36228:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36228:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617070726f76652066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36248:34:43",
                                    "type": "",
                                    "value": "ERC777: approve from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36221:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36221:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36221:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36303:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36314:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36299:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36299:18:43"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36319:7:43",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36292:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36292:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36292:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36336:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36348:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36359:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36344:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36344:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36336:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36119:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36133:4:43",
                            "type": ""
                          }
                        ],
                        "src": "35968:401:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36548:225:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36565:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36576:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36558:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36558:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36558:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36599:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36610:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36595:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36595:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36615:2:43",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36588:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36588:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36588:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36638:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36649:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36634:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36634:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617070726f766520746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36654:34:43",
                                    "type": "",
                                    "value": "ERC777: approve to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36627:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36627:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36627:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36709:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36720:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36705:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36705:18:43"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36725:5:43",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36698:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36698:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36698:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36740:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36752:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36763:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36748:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36748:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36740:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36525:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36539:4:43",
                            "type": ""
                          }
                        ],
                        "src": "36374:399:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36952:163:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36969:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36980:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36962:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36962:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36962:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37003:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37014:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36999:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36999:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37019:2:43",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36992:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36992:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36992:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37042:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37053:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37038:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37038:18:43"
                                  },
                                  {
                                    "hexValue": "6643617368206d617475726564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37058:15:43",
                                    "type": "",
                                    "value": "fCash matured"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37031:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37031:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37031:43:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37083:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37095:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37106:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37091:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37091:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37083:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36929:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36943:4:43",
                            "type": ""
                          }
                        ],
                        "src": "36778:337:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37181:374:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37191:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37211:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37205:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37205:12:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "37195:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37233:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37238:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37226:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37226:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37226:19:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37254:14:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37264:4:43",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37258:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37277:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37288:3:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37293:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37284:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37284:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "37277:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37305:28:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37323:5:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37330:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37319:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37319:14:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "37309:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37342:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37351:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "37346:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37410:120:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37431:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "37442:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37436:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37436:13:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37424:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37424:26:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37424:26:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37463:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37474:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "37479:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37470:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37470:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "37463:3:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37495:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "37509:6:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "37517:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37505:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37505:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "37495:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "37372:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37375:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37369:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37369:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "37383:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37385:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "37394:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37397:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37390:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37390:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "37385:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "37365:3:43",
                                "statements": []
                              },
                              "src": "37361:169:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37539:10:43",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "37546:3:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "37539:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_bytes32_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "37158:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "37165:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "37173:3:43",
                            "type": ""
                          }
                        ],
                        "src": "37120:435:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37821:1525:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37831:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37841:2:43",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37835:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37852:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37870:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37881:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37866:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37866:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37856:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37900:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "37915:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "37931:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "37936:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "37927:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "37927:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "37940:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "37923:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "37923:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37911:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37911:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37893:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37893:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37893:51:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37953:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37963:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "37957:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37985:9:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "37996:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37981:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37981:18:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38001:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37974:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37974:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37974:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38013:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "38024:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "38017:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38039:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38059:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "38053:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38053:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "38043:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38082:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "38090:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38075:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38075:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38075:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38106:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "38116:2:43",
                                "type": "",
                                "value": "96"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "38110:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38127:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38138:9:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "38149:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38134:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38134:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "38127:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38161:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38183:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "38198:1:43",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "38201:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "38194:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "38194:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38179:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38179:30:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "38211:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38175:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38175:39:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "38165:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38223:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38241:6:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "38249:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38237:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38237:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "38227:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38261:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "38270:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "38265:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38329:988:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "38350:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38363:6:43"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38371:9:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "38359:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38359:22:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "38387:2:43",
                                                  "type": "",
                                                  "value": "95"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "38383:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38383:7:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38355:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38355:36:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38343:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38343:49:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38343:49:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38405:23:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "38421:6:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38415:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38415:13:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "38409:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38441:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38451:4:43",
                                      "type": "",
                                      "value": "0xe0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "38445:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38468:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "38484:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38478:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38478:9:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "38472:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "38521:22:43",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x21",
                                              "nodeType": "YulIdentifier",
                                              "src": "38523:16:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "38523:18:43"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "38523:18:43"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "38513:2:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38517:1:43",
                                              "type": "",
                                              "value": "7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "38510:2:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38510:9:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "38503:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38503:17:43"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "38500:43:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "38563:6:43"
                                        },
                                        {
                                          "name": "_6",
                                          "nodeType": "YulIdentifier",
                                          "src": "38571:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38556:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38556:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38556:18:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38598:6:43"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38606:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38594:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38594:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_4",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38625:2:43"
                                                    },
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38629:2:43"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "38621:3:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "38621:11:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "38615:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38615:18:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38635:6:43",
                                              "type": "",
                                              "value": "0xffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "38611:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38611:31:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38587:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38587:56:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38587:56:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38667:6:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "38675:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38663:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38663:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38690:2:43"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38694:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38686:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38686:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38680:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38680:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38656:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38656:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38656:43:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38723:6:43"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "38731:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38719:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38719:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38746:2:43"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38750:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38742:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38742:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38736:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38736:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38712:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38712:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38712:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38768:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38778:4:43",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "38772:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38795:38:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "38825:2:43"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "38829:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38821:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38821:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38815:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38815:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "38799:12:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "38862:12:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38880:6:43"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "38888:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38876:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38876:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bool",
                                        "nodeType": "YulIdentifier",
                                        "src": "38846:15:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38846:46:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38846:46:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38905:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38915:4:43",
                                      "type": "",
                                      "value": "0xa0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "38909:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38932:40:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "38964:2:43"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "38968:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38960:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38960:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38954:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38954:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_1",
                                        "nodeType": "YulTypedName",
                                        "src": "38936:14:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "39001:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "39021:6:43"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "39029:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39017:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39017:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bool",
                                        "nodeType": "YulIdentifier",
                                        "src": "38985:15:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38985:48:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38985:48:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "39046:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "39056:4:43",
                                      "type": "",
                                      "value": "0xc0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "39050:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "39073:40:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "39105:2:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "39109:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39101:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39101:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "39095:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39095:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_2",
                                        "nodeType": "YulTypedName",
                                        "src": "39077:14:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "39137:6:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "39145:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39133:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39133:15:43"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "39150:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "39126:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39126:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39126:27:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39166:71:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39205:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "39225:6:43"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "39233:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39221:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39221:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_array_bytes32_dyn",
                                        "nodeType": "YulIdentifier",
                                        "src": "39176:28:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39176:61:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "39166:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39250:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "39264:6:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39272:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39260:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39260:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "39250:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39288:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "39299:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39304:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39295:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39295:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "39288:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "38291:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "38294:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "38288:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38288:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "38302:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38304:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "38313:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38316:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38309:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38309:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "38304:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "38284:3:43",
                                "statements": []
                              },
                              "src": "38280:1037:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39326:14:43",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "39334:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39326:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37782:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "37793:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37801:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37812:4:43",
                            "type": ""
                          }
                        ],
                        "src": "37560:1786:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39584:1012:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39594:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39604:2:43",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39598:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39615:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39633:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39644:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39629:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39629:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39619:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39663:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "39678:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "39694:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "39699:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "39690:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "39690:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "39703:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "39686:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39686:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "39674:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39674:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39656:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39656:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39656:51:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39716:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39726:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "39720:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39748:9:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "39759:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39744:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39744:18:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39764:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39737:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39737:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39737:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39776:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "39787:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "39780:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39802:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39822:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39816:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39816:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "39806:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39845:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39853:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39838:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39838:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39838:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39869:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39879:2:43",
                                "type": "",
                                "value": "96"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "39873:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39890:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39901:9:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "39912:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39897:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39897:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "39890:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39924:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39946:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "39961:1:43",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "39964:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "39957:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39957:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39942:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39942:30:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "39974:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39938:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39938:39:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "39928:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39986:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "40004:6:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "40012:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40000:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40000:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "39990:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "40024:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "40033:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "40028:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40092:475:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40113:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40126:6:43"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40134:9:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "40122:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40122:22:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "40150:2:43",
                                                  "type": "",
                                                  "value": "95"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "40146:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40146:7:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40118:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40118:36:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40106:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40106:49:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40106:49:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40168:23:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40184:6:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40178:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40178:13:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "40172:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "40211:6:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40229:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "40223:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40223:9:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "40234:6:43",
                                              "type": "",
                                              "value": "0xffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "40219:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40219:22:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40204:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40204:38:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40204:38:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40266:6:43"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40274:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40262:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40262:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "_4",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "40303:2:43"
                                                        },
                                                        {
                                                          "name": "_2",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "40307:2:43"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40299:3:43"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "40299:11:43"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40293:5:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "40293:18:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "40286:6:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40286:26:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "40279:6:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40279:34:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40255:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40255:59:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40255:59:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40327:38:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "40357:2:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40361:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40353:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40353:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40347:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40347:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "40331:12:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40389:6:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40397:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40385:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40385:15:43"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "40402:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40378:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40378:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40378:27:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40418:69:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "40457:12:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40475:6:43"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "40483:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40471:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40471:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_array_bytes32_dyn",
                                        "nodeType": "YulIdentifier",
                                        "src": "40428:28:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40428:59:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "40418:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40500:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40514:6:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "40522:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40510:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40510:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "40500:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40538:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40549:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "40554:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40545:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40545:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "40538:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "40054:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "40057:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "40051:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40051:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "40065:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40067:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "40076:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "40079:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40072:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40072:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "40067:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "40047:3:43",
                                "statements": []
                              },
                              "src": "40043:524:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40576:14:43",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "40584:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40576:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39545:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "39556:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "39564:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39575:4:43",
                            "type": ""
                          }
                        ],
                        "src": "39351:1245:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40649:80:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40676:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "40678:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40678:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40678:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "40665:1:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "40672:1:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "40668:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40668:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "40662:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40662:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "40659:39:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40707:16:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "40718:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "40721:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40714:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40714:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "40707:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "40632:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "40635:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "40641:3:43",
                            "type": ""
                          }
                        ],
                        "src": "40601:128:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40781:88:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40812:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "40814:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40814:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40814:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "40797:5:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40808:1:43",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "40804:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40804:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "40794:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40794:17:43"
                              },
                              "nodeType": "YulIf",
                              "src": "40791:43:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40843:20:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "40854:5:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40861:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40850:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40850:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "40843:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "40763:5:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "40773:3:43",
                            "type": ""
                          }
                        ],
                        "src": "40734:135:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40912:74:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40935:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "40937:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40937:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40937:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "40932:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "40925:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40925:9:43"
                              },
                              "nodeType": "YulIf",
                              "src": "40922:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40966:14:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "40975:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "40978:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "40971:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40971:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "40966:1:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "40897:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "40900:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "40906:1:43",
                            "type": ""
                          }
                        ],
                        "src": "40874:112:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41165:233:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41182:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41193:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41175:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41175:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41175:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41216:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41227:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41212:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41212:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41232:2:43",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41205:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41205:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41205:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41255:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41266:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41251:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41251:18:43"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "41271:34:43",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41244:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41244:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41244:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41326:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41337:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41322:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41322:18:43"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "41342:13:43",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41315:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41315:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41315:41:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "41365:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41377:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41388:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "41373:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41373:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "41365:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41142:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41156:4:43",
                            "type": ""
                          }
                        ],
                        "src": "40991:407:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41532:175:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "41542:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41554:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41565:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "41550:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41550:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "41542:4:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41577:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41595:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41600:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "41591:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41591:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41604:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "41587:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41587:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41581:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41622:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41637:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41645:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41633:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41633:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41615:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41615:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41615:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41669:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41680:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41665:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41665:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41689:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41697:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41685:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41685:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41658:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41658:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41658:43:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41493:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "41504:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "41512:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41523:4:43",
                            "type": ""
                          }
                        ],
                        "src": "41403:304:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41886:244:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41903:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41914:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41896:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41896:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41896:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41937:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41948:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41933:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41933:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41953:2:43",
                                    "type": "",
                                    "value": "54"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41926:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41926:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41926:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41976:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41987:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41972:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41972:18:43"
                                  },
                                  {
                                    "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "41992:34:43",
                                    "type": "",
                                    "value": "SafeERC20: approve from non-zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41965:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41965:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41965:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42047:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42058:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42043:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42043:18:43"
                                  },
                                  {
                                    "hexValue": "20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "42063:24:43",
                                    "type": "",
                                    "value": " to non-zero allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42036:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42036:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42036:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "42097:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42109:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42120:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42105:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42105:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "42097:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41863:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41877:4:43",
                            "type": ""
                          }
                        ],
                        "src": "41712:418:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42264:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "42274:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42286:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42297:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42282:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42282:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "42274:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42316:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "42331:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42347:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42352:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "42343:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "42343:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42356:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "42339:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42339:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "42327:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42327:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42309:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42309:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42309:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42380:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42391:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42376:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "42396:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42369:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42369:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42369:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "42225:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "42236:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "42244:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "42255:4:43",
                            "type": ""
                          }
                        ],
                        "src": "42135:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42543:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "42553:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42565:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42576:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42561:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42561:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "42553:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42595:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "42610:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42626:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42631:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "42622:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "42622:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42635:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "42618:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42618:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "42606:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42606:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42588:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42588:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42588:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42659:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42670:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42655:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42655:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "42675:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42648:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42648:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42648:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "42504:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "42515:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "42523:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "42534:4:43",
                            "type": ""
                          }
                        ],
                        "src": "42414:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42774:170:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42820:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42829:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42832:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "42822:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "42822:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "42822:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "42795:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42804:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "42791:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42791:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42816:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "42787:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42787:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "42784:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42845:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42864:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42858:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42858:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "42849:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "42908:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "42883:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42883:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42883:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "42923:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "42933:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "42923:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "42740:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "42751:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "42763:6:43",
                            "type": ""
                          }
                        ],
                        "src": "42693:251:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43226:455:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43236:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43254:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43259:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "43250:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43250:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43263:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "43246:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43246:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "43240:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43281:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "43296:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43304:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43292:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43292:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43274:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43274:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43274:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43328:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43339:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43324:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43324:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43348:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43356:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43344:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43344:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43317:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43317:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43317:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43380:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43391:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43376:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "43400:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43408:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43396:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43396:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43369:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43369:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43369:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43432:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43443:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43428:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43428:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "43448:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43421:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43421:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43421:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43475:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43486:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43471:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43471:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43492:3:43",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43464:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43464:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43464:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43505:60:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "43537:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43549:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43560:3:43",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43545:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43545:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43519:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43519:46:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "43509:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43585:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43596:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43581:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43581:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43606:6:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43614:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "43602:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43602:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43574:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43574:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43574:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "43634:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "43660:6:43"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "43668:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43642:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43642:33:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43634:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43155:9:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "43166:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "43174:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "43182:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "43190:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "43198:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43206:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43217:4:43",
                            "type": ""
                          }
                        ],
                        "src": "42949:732:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43860:180:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43877:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43888:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43870:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43870:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43870:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43911:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43922:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43907:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43907:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43927:2:43",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43900:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43900:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43900:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43950:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43961:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43946:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43946:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "43966:32:43",
                                    "type": "",
                                    "value": "ERC777: insufficient allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43939:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43939:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43939:60:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44008:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44020:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44031:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44016:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44016:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44008:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43837:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43851:4:43",
                            "type": ""
                          }
                        ],
                        "src": "43686:354:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44219:229:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44236:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44247:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44229:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44229:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44229:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44270:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44281:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44266:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44266:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44286:2:43",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44259:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44259:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44259:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44309:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44320:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44305:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44305:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e7366657220616d6f756e74206578636565647320",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "44325:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer amount exceeds "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44298:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44298:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44298:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44380:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44391:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44376:18:43"
                                  },
                                  {
                                    "hexValue": "62616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "44396:9:43",
                                    "type": "",
                                    "value": "balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44369:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44369:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44369:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44415:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44427:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44438:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44423:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44423:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44415:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44196:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44210:4:43",
                            "type": ""
                          }
                        ],
                        "src": "44045:403:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44646:257:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44663:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44674:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44656:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44656:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44656:25:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44701:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44712:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44697:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44697:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44717:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44690:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44690:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44690:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "44729:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "44761:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44773:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44784:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44769:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44769:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "44743:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44743:45:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "44733:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44808:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44819:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44804:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44804:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "44828:6:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44836:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "44824:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44824:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44797:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44797:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44797:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44856:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "44882:6:43"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "44890:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "44864:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44864:33:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44856:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44599:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "44610:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "44618:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44626:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44637:4:43",
                            "type": ""
                          }
                        ],
                        "src": "44453:450:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45082:307:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45099:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45110:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45092:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45092:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45092:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45133:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45144:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45129:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45129:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45149:2:43",
                                    "type": "",
                                    "value": "77"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45122:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45122:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45122:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45172:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45183:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45168:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45168:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20746f6b656e20726563697069656e7420636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45188:34:43",
                                    "type": "",
                                    "value": "ERC777: token recipient contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45161:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45161:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45161:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45243:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45254:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45239:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45239:18:43"
                                  },
                                  {
                                    "hexValue": "20686173206e6f20696d706c656d656e74657220666f7220455243373737546f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45259:34:43",
                                    "type": "",
                                    "value": " has no implementer for ERC777To"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45232:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45232:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45232:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45314:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45325:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45310:19:43"
                                  },
                                  {
                                    "hexValue": "6b656e73526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45331:15:43",
                                    "type": "",
                                    "value": "kensRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45303:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45303:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45303:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45356:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45368:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45379:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45364:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45364:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45356:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45059:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45073:4:43",
                            "type": ""
                          }
                        ],
                        "src": "44908:481:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45568:224:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45585:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45596:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45578:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45578:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45578:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45619:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45630:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45615:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45615:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45635:2:43",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45608:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45608:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45608:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45658:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45669:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45654:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45654:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2073656e642066726f6d20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45674:34:43",
                                    "type": "",
                                    "value": "ERC777: send from the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45647:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45647:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45647:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45729:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45740:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45725:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45725:18:43"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45745:4:43",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45718:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45718:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45718:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45759:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45771:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45782:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45767:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45767:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45759:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45545:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45559:4:43",
                            "type": ""
                          }
                        ],
                        "src": "45394:398:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45971:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45988:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45999:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45981:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45981:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45981:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46022:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46033:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46018:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46018:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46038:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46011:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46011:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46011:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46061:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46072:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46057:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46057:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2073656e6420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "46077:34:43",
                                    "type": "",
                                    "value": "ERC777: send to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46050:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46050:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46050:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46121:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46133:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46144:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46129:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46129:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46121:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45948:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45962:4:43",
                            "type": ""
                          }
                        ],
                        "src": "45797:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46332:171:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46349:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46360:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46342:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46342:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46342:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46383:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46394:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46379:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46379:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46399:2:43",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46372:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46372:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46372:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46422:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46433:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46418:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46418:18:43"
                                  },
                                  {
                                    "hexValue": "43473a206e6f206d61726b657473206c6973746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "46438:23:43",
                                    "type": "",
                                    "value": "CG: no markets listed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46411:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46411:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46411:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46471:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46483:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46494:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46479:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46479:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46471:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "46309:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "46323:4:43",
                            "type": ""
                          }
                        ],
                        "src": "46158:345:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46682:172:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46699:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46710:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46692:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46692:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46692:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46733:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46744:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46729:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46729:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46749:2:43",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46722:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46722:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46722:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46772:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46783:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46768:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46768:18:43"
                                  },
                                  {
                                    "hexValue": "43473a206d61726b657420696e64657820626f756e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "46788:24:43",
                                    "type": "",
                                    "value": "CG: market index bound"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46761:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46761:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46761:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46822:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46834:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46845:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46830:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46830:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46822:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "46659:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "46673:4:43",
                            "type": ""
                          }
                        ],
                        "src": "46508:346:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47033:169:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47050:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47061:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47043:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47043:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47043:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47084:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47095:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47080:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47080:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47100:2:43",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47073:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47073:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47073:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47123:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47134:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47119:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47119:18:43"
                                  },
                                  {
                                    "hexValue": "43473a206e6f206d61726b657420666f756e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47139:21:43",
                                    "type": "",
                                    "value": "CG: no market found"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47112:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47112:49:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47112:49:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47170:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47182:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47193:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47178:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47178:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47170:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47010:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "47024:4:43",
                            "type": ""
                          }
                        ],
                        "src": "46859:343:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47381:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47398:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47409:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47391:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47391:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47391:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47432:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47443:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47428:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47428:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47448:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47421:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47421:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47421:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47471:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47482:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47467:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47467:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47487:34:43",
                                    "type": "",
                                    "value": "ERC777: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47460:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47460:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47460:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47531:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47543:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47554:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47539:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47539:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47531:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47358:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "47372:4:43",
                            "type": ""
                          }
                        ],
                        "src": "47207:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47677:794:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "47724:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "47733:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "47736:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "47726:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "47726:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "47726:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "47698:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47707:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "47694:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47694:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47719:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "47690:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47690:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "47687:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "47749:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47769:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "47763:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47763:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "47753:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "47781:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "47803:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47811:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47799:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47799:16:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "47785:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "47890:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "47892:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "47892:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "47892:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "47833:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47845:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "47830:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47830:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "47869:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "47881:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "47866:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47866:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "47827:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47827:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "47824:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47928:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "47932:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47921:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47921:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47921:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "47952:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47971:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "47965:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47965:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "47956:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "48012:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "47990:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47990:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47990:28:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "48034:6:43"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "48042:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48027:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48027:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48027:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "48057:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48082:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48093:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48078:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48078:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "48072:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48072:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "48061:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "48128:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "48106:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48106:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48106:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "48156:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48164:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48152:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48152:15:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "48169:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48145:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48145:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48145:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "48186:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48211:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48222:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48207:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48207:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "48201:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48201:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "48190:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "48260:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "48235:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48235:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48235:33:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "48288:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48296:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48284:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48284:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "48301:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48277:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48277:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48277:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "48318:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48343:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48354:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48339:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48339:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "48333:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48333:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "48322:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "48391:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "48367:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48367:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48367:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "48419:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48427:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48415:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48415:15:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "48432:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48408:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48408:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48408:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "48449:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "48459:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "48449:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47643:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "47654:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "47666:6:43",
                            "type": ""
                          }
                        ],
                        "src": "47568:903:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "48650:174:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "48667:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48678:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48660:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48660:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48660:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48701:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48712:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48697:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48697:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48717:2:43",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48690:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48690:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48690:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48740:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48751:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48736:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48736:18:43"
                                  },
                                  {
                                    "hexValue": "5265636569766572206973207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "48756:26:43",
                                    "type": "",
                                    "value": "Receiver is zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48729:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48729:54:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48729:54:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "48792:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "48804:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48815:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "48800:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48800:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "48792:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "48627:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "48641:4:43",
                            "type": ""
                          }
                        ],
                        "src": "48476:348:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "49003:171:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49020:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49031:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49013:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49013:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49013:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49054:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49065:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49050:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49050:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49070:2:43",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49043:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49043:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49043:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49093:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49104:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49089:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49089:18:43"
                                  },
                                  {
                                    "hexValue": "4e6567617469766520436173682042616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "49109:23:43",
                                    "type": "",
                                    "value": "Negative Cash Balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49082:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49082:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49082:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "49142:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49154:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49165:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "49150:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49150:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "49142:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "48980:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "48994:4:43",
                            "type": ""
                          }
                        ],
                        "src": "48829:345:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "49410:330:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "49420:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49438:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49443:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "49434:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49434:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49447:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "49430:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49430:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "49424:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49465:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "49480:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "49488:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "49476:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49476:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49458:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49458:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49458:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49512:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49523:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49508:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49508:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "49532:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "49540:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "49528:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49528:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49501:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49501:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49501:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49564:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49575:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49560:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49560:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "49580:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49553:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49553:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49553:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49607:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49618:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49603:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49603:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "49623:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49596:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49596:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49596:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49650:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49661:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49646:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49646:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49667:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49639:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49639:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49639:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "49680:54:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "49706:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49718:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49729:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49714:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49714:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "49688:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49688:46:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "49680:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49347:9:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "49358:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "49366:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "49374:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "49382:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "49390:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "49401:4:43",
                            "type": ""
                          }
                        ],
                        "src": "49179:561:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "49902:218:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "49912:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49924:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49935:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "49920:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49920:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "49912:4:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "49947:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49965:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49970:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "49961:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49961:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49974:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "49957:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49957:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "49951:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49992:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "50007:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50015:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50003:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50003:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49985:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49985:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49985:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50039:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50050:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50035:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50035:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50059:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50067:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50055:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50055:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50028:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50028:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50028:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50091:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50102:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50087:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50087:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "50107:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50080:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50080:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50080:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49855:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "49866:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "49874:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "49882:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "49893:4:43",
                            "type": ""
                          }
                        ],
                        "src": "49745:375:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "50299:163:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50316:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50327:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50309:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50309:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50309:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50350:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50361:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50346:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50346:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50366:2:43",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50339:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50339:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50339:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50389:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50400:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50385:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50385:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c696420696e646578",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "50405:15:43",
                                    "type": "",
                                    "value": "Invalid index"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50378:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50378:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50378:43:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "50430:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50442:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50453:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "50438:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50438:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "50430:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50276:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "50290:4:43",
                            "type": ""
                          }
                        ],
                        "src": "50125:337:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "50624:218:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "50634:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50646:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50657:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "50642:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50642:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "50634:4:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "50669:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50687:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50692:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "50683:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50683:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50696:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "50679:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50679:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "50673:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50714:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "50729:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50737:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50725:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50725:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50707:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50707:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50707:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50761:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50772:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50757:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50757:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "50777:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50750:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50750:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50750:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50804:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50815:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50800:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50800:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "50824:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50832:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50820:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50820:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50793:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50793:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50793:43:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32_t_address__to_t_address_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50577:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "50588:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "50596:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "50604:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "50615:4:43",
                            "type": ""
                          }
                        ],
                        "src": "50467:375:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "50925:167:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "50971:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "50980:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "50983:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "50973:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "50973:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "50973:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "50946:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50955:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "50942:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50942:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50967:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "50938:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50938:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "50935:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "50996:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51015:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "51009:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51009:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "51000:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "51056:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "51034:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51034:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51034:28:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "51071:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "51081:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "51071:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50891:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "50902:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "50914:6:43",
                            "type": ""
                          }
                        ],
                        "src": "50847:245:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "51271:232:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51288:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51299:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51281:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51281:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51281:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51322:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51333:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51318:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51318:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51338:2:43",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51311:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51311:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51311:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51361:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51372:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51357:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51357:18:43"
                                  },
                                  {
                                    "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51377:34:43",
                                    "type": "",
                                    "value": "SafeERC20: ERC20 operation did n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51350:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51350:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51350:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51432:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51443:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51428:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51428:18:43"
                                  },
                                  {
                                    "hexValue": "6f742073756363656564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51448:12:43",
                                    "type": "",
                                    "value": "ot succeed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51421:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51421:40:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51421:40:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "51470:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51482:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51493:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "51478:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51478:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "51470:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "51248:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "51262:4:43",
                            "type": ""
                          }
                        ],
                        "src": "51097:406:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "51682:224:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51699:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51710:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51692:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51692:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51692:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51733:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51744:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51729:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51729:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51749:2:43",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51722:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51722:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51722:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51772:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51783:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51768:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51768:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206275726e2066726f6d20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51788:34:43",
                                    "type": "",
                                    "value": "ERC777: burn from the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51761:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51761:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51761:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51843:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51854:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51839:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51839:18:43"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51859:4:43",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51832:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51832:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51832:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "51873:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51885:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51896:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "51881:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51881:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "51873:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "51659:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "51673:4:43",
                            "type": ""
                          }
                        ],
                        "src": "51508:398:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "52085:225:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52102:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52113:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52095:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52095:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52095:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52136:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52147:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52132:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52132:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52152:2:43",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52125:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52125:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52125:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52175:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52186:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52171:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52171:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206275726e20616d6f756e7420657863656564732062616c61",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "52191:34:43",
                                    "type": "",
                                    "value": "ERC777: burn amount exceeds bala"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52164:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52164:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52164:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52246:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52257:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52242:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52242:18:43"
                                  },
                                  {
                                    "hexValue": "6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "52262:5:43",
                                    "type": "",
                                    "value": "nce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52235:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52235:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52235:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "52277:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52289:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52300:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "52285:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52285:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "52277:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "52062:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "52076:4:43",
                            "type": ""
                          }
                        ],
                        "src": "51911:399:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "52462:222:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "52472:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52484:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52495:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "52480:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52480:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "52472:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52514:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "52529:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52537:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "52525:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52525:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52507:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52507:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52507:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52565:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52576:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52561:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52561:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "52585:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52593:24:43",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "52581:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52581:37:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52554:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52554:65:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52554:65:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52639:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52650:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52635:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52635:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "52669:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "52662:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "52662:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "52655:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52655:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52628:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52628:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52628:50:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint88_t_bool__to_t_uint16_t_uint88_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "52415:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "52426:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "52434:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "52442:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "52453:4:43",
                            "type": ""
                          }
                        ],
                        "src": "52315:369:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "52863:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52880:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52891:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52873:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52873:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52873:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52914:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52925:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52910:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52910:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52930:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52903:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52903:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52903:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52953:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52964:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52949:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52949:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "52969:34:43",
                                    "type": "",
                                    "value": "Address: insufficient balance fo"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52942:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52942:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52942:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "53024:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53035:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53020:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53020:18:43"
                                  },
                                  {
                                    "hexValue": "722063616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "53040:8:43",
                                    "type": "",
                                    "value": "r call"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53013:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53013:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53013:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "53058:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "53070:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53081:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "53066:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53066:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "53058:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "52840:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "52854:4:43",
                            "type": ""
                          }
                        ],
                        "src": "52689:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "53270:179:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "53287:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53298:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53280:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53280:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53280:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "53321:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53332:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53317:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53317:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53337:2:43",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53310:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53310:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53310:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "53360:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53371:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53356:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53356:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "53376:31:43",
                                    "type": "",
                                    "value": "Address: call to non-contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53349:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53349:59:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53349:59:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "53417:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "53429:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53440:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "53425:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53425:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "53417:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "53247:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "53261:4:43",
                            "type": ""
                          }
                        ],
                        "src": "53096:353:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "53591:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "53601:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "53621:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "53615:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53615:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "53605:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "53663:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53671:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53659:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53659:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "53678:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "53683:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "53637:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53637:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53637:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "53699:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "53710:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "53715:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "53706:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53706:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "53699:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "53567:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "53572:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "53583:3:43",
                            "type": ""
                          }
                        ],
                        "src": "53454:274:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function validator_revert_uint88(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_uint32(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint88t_addresst_uint32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_uint88(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_uint32(value_2)\n        value3 := value_2\n    }\n    function validator_revert_uint16(value)\n    {\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function validator_revert_uint40(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint16t_uint40(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint16(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_uint40(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_contract$_INotionalV2_$7474__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_uint32(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2763_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_7709() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x0160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_7716() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xc0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_IWETH9_$7263__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_decode_tuple_t_uint256t_struct$_RedeemOpts_$7490_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        if slt(add(_1, not(31)), 0x80) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        mstore(memPtr, value)\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := calldataload(add(headStart, 0x80))\n        validator_revert_uint32(value_3)\n        mstore(add(memPtr, 96), value_3)\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint40__to_t_uint40__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2763_t_int256__to_t_address_t_int256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value4 := add(_2, 32)\n        value5 := length\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2763_t_int256_t_enum$_TokenType_$4834__to_t_address_t_int256_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        if iszero(lt(value2, 5)) { panic_error_0x21() }\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_uint16_t_uint40_t_int256_t_uint256_t_bool__to_t_uint16_t_uint256_t_int256_t_uint256_t_bool__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n    }\n    function abi_decode_tuple_t_int256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_int256(x, y) -> product\n    {\n        let _1 := sub(shl(255, 1), 1)\n        let _2 := sgt(y, 0)\n        let _3 := sgt(x, 0)\n        if and(and(_3, _2), gt(x, div(_1, y))) { panic_error_0x11() }\n        let _4 := shl(255, 1)\n        let _5 := slt(y, 0)\n        if and(and(_3, _5), slt(y, sdiv(_4, x))) { panic_error_0x11() }\n        let _6 := slt(x, 0)\n        if and(and(_6, _2), slt(x, sdiv(_4, y))) { panic_error_0x11() }\n        if and(and(_6, _5), slt(x, sdiv(_1, y))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_int256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        if and(eq(x, shl(255, 1)), eq(y, not(0))) { panic_error_0x11() }\n        r := sdiv(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffff))\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_decode_uint8_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint8t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := abi_decode_uint8_fromMemory(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256_t_bool__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256_t_bool__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffff))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), iszero(iszero(value5)))\n    }\n    function abi_decode_tuple_t_uint88t_uint8t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint88(value)\n        value0 := value\n        value1 := abi_decode_uint8_fromMemory(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function array_allocation_size_array_uint8_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint8_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, abi_decode_uint8_fromMemory(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_struct$_CashGroupSettings_$4929_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x0160) { revert(0, 0) }\n        let value := allocate_memory_7709()\n        mstore(value, abi_decode_uint8_fromMemory(_2))\n        mstore(add(value, 32), abi_decode_uint8_fromMemory(add(_2, 32)))\n        mstore(add(value, 64), abi_decode_uint8_fromMemory(add(_2, 64)))\n        mstore(add(value, 96), abi_decode_uint8_fromMemory(add(_2, 96)))\n        mstore(add(value, 128), abi_decode_uint8_fromMemory(add(_2, 128)))\n        mstore(add(value, 160), abi_decode_uint8_fromMemory(add(_2, 160)))\n        mstore(add(value, 192), abi_decode_uint8_fromMemory(add(_2, 192)))\n        mstore(add(value, 224), abi_decode_uint8_fromMemory(add(_2, 224)))\n        let _3 := 256\n        mstore(add(value, _3), abi_decode_uint8_fromMemory(add(_2, _3)))\n        let _4 := 288\n        let offset_1 := mload(add(_2, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, _4), abi_decode_array_uint8_dyn_fromMemory(add(_2, offset_1), dataEnd))\n        let _5 := 320\n        let offset_2 := mload(add(_2, _5))\n        if gt(offset_2, _1) { revert(0, 0) }\n        mstore(add(value, _5), abi_decode_array_uint8_dyn_fromMemory(add(_2, offset_2), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid currency\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid maturity\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_encode_tuple_packed_t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b_t_string_memory_ptr_t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"Wrapped f\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 9), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 9), \" @ \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 12), length_1)\n        end := add(add(_1, length_1), 12)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476_t_string_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"wf\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 2), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 2), \":\")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 3), length_1)\n        end := add(add(_1, length_1), 3)\n    }\n    function abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC777: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC777: transfer from the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC777: caller is not an operato\")\n        mstore(add(headStart, 96), \"r for holder\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Max Deposit\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC777: authorizing self as oper\")\n        mstore(add(headStart, 96), \"ator\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"Matured\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr__to_t_struct$_RedeemOpts_$7490_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, iszero(iszero(mload(value0))))\n        mstore(add(headStart, 0x20), iszero(iszero(mload(add(value0, 0x20)))))\n        mstore(add(headStart, 0x40), and(mload(add(value0, 0x40)), sub(shl(160, 1), 1)))\n        mstore(add(headStart, 0x60), and(mload(add(value0, 0x60)), 0xffffffff))\n    }\n    function abi_decode_struct_Token_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        let value_1 := mload(headStart)\n        validator_revert_address(value_1)\n        mstore(memPtr, value_1)\n        let value_2 := mload(add(headStart, 32))\n        validator_revert_bool(value_2)\n        mstore(add(memPtr, 32), value_2)\n        mstore(add(memPtr, 64), mload(add(headStart, 64)))\n        let value_3 := mload(add(headStart, 96))\n        if iszero(lt(value_3, 5)) { revert(0, 0) }\n        mstore(add(memPtr, 96), value_3)\n        mstore(add(memPtr, 128), mload(add(headStart, 128)))\n    }\n    function abi_decode_tuple_t_struct$_Token_$4890_memory_ptrt_struct$_Token_$4890_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 320) { revert(0, 0) }\n        value0 := abi_decode_struct_Token_fromMemory(headStart, dataEnd)\n        value1 := abi_decode_struct_Token_fromMemory(add(headStart, 160), dataEnd)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"Invalid\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_struct$_AccountContext_$4940_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_uint40(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, shl(248, 255)))) { revert(0, 0) }\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), abi_decode_uint8_fromMemory(add(headStart, 64)))\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_uint16(value_2)\n        mstore(add(memPtr, 96), value_2)\n        let value_3 := mload(add(headStart, 128))\n        if iszero(eq(value_3, and(value_3, not(0xffffffffffffffffffffffffffff)))) { revert(0, 0) }\n        mstore(add(memPtr, 128), value_3)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _1)\n        let _4 := 0xc0\n        let srcEnd := add(add(_2, mul(_3, _4)), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _1)\n        for { } lt(src, srcEnd) { src := add(src, _4) }\n        {\n            if slt(sub(dataEnd, src), _4)\n            {\n                let _5 := 0\n                revert(_5, _5)\n            }\n            let value := allocate_memory_7716()\n            mstore(value, mload(src))\n            mstore(add(value, _1), mload(add(src, _1)))\n            let _6 := 64\n            mstore(add(value, _6), mload(add(src, _6)))\n            let _7 := 96\n            mstore(add(value, _7), mload(add(src, _7)))\n            let _8 := 128\n            mstore(add(value, _8), mload(add(src, _8)))\n            let _9 := 160\n            let value_1 := mload(add(src, _9))\n            if iszero(lt(value_1, 3))\n            {\n                let _10 := 0\n                revert(_10, _10)\n            }\n            mstore(add(value, _9), value_1)\n            mstore(dst, value)\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC777: revoking self as operato\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint16_t_address__to_t_uint16_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_int256t_int256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint16_t_int256_t_bool__to_t_uint16_t_int256_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Must Settle\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC777: approve from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC777: approve to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"fCash matured\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_array_bytes32_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let _1 := 64\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        let _2 := 32\n        mstore(add(headStart, _2), _1)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        let _3 := 96\n        pos := add(headStart, _3)\n        let tail_2 := add(add(headStart, shl(5, length)), _3)\n        let srcPtr := add(value1, _2)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(95)))\n            let _4 := mload(srcPtr)\n            let _5 := 0xe0\n            let _6 := mload(_4)\n            if iszero(lt(_6, 7)) { panic_error_0x21() }\n            mstore(tail_2, _6)\n            mstore(add(tail_2, _2), and(mload(add(_4, _2)), 0xffff))\n            mstore(add(tail_2, _1), mload(add(_4, _1)))\n            mstore(add(tail_2, _3), mload(add(_4, _3)))\n            let _7 := 0x80\n            let memberValue0 := mload(add(_4, _7))\n            abi_encode_bool(memberValue0, add(tail_2, _7))\n            let _8 := 0xa0\n            let memberValue0_1 := mload(add(_4, _8))\n            abi_encode_bool(memberValue0_1, add(tail_2, _8))\n            let _9 := 0xc0\n            let memberValue0_2 := mload(add(_4, _9))\n            mstore(add(tail_2, _9), _5)\n            tail_2 := abi_encode_array_bytes32_dyn(memberValue0_2, add(tail_2, _5))\n            srcPtr := add(srcPtr, _2)\n            pos := add(pos, _2)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let _1 := 64\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        let _2 := 32\n        mstore(add(headStart, _2), _1)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        let _3 := 96\n        pos := add(headStart, _3)\n        let tail_2 := add(add(headStart, shl(5, length)), _3)\n        let srcPtr := add(value1, _2)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(95)))\n            let _4 := mload(srcPtr)\n            mstore(tail_2, and(mload(_4), 0xffff))\n            mstore(add(tail_2, _2), iszero(iszero(mload(add(_4, _2)))))\n            let memberValue0 := mload(add(_4, _1))\n            mstore(add(tail_2, _1), _3)\n            tail_2 := abi_encode_array_bytes32_dyn(memberValue0, add(tail_2, _3))\n            srcPtr := add(srcPtr, _2)\n            pos := add(pos, _2)\n        }\n        tail := tail_2\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 54)\n        mstore(add(headStart, 64), \"SafeERC20: approve from non-zero\")\n        mstore(add(headStart, 96), \" to non-zero allowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 192)\n        let tail_1 := abi_encode_string(value4, add(headStart, 192))\n        mstore(add(headStart, 160), sub(tail_1, headStart))\n        tail := abi_encode_string(value5, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"ERC777: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ERC777: transfer amount exceeds \")\n        mstore(add(headStart, 96), \"balance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 77)\n        mstore(add(headStart, 64), \"ERC777: token recipient contract\")\n        mstore(add(headStart, 96), \" has no implementer for ERC777To\")\n        mstore(add(headStart, 128), \"kensRecipient\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC777: send from the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC777: send to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"CG: no markets listed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"CG: market index bound\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"CG: no market found\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC777: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 128)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_uint32(value_3)\n        mstore(add(memPtr, 96), value_3)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Receiver is zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"Negative Cash Balance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_string(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Invalid index\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_address__to_t_address_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC777: burn from the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC777: burn amount exceeds bala\")\n        mstore(add(headStart, 96), \"nce\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint16_t_uint88_t_bool__to_t_uint16_t_uint88_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffff))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "5135": [
                  {
                    "length": 32,
                    "start": 988
                  },
                  {
                    "length": 32,
                    "start": 2031
                  },
                  {
                    "length": 32,
                    "start": 2655
                  },
                  {
                    "length": 32,
                    "start": 2915
                  },
                  {
                    "length": 32,
                    "start": 3266
                  },
                  {
                    "length": 32,
                    "start": 3873
                  },
                  {
                    "length": 32,
                    "start": 3974
                  },
                  {
                    "length": 32,
                    "start": 4653
                  },
                  {
                    "length": 32,
                    "start": 6566
                  },
                  {
                    "length": 32,
                    "start": 7089
                  },
                  {
                    "length": 32,
                    "start": 7453
                  },
                  {
                    "length": 32,
                    "start": 7587
                  },
                  {
                    "length": 32,
                    "start": 7737
                  },
                  {
                    "length": 32,
                    "start": 8201
                  },
                  {
                    "length": 32,
                    "start": 8816
                  },
                  {
                    "length": 32,
                    "start": 8978
                  },
                  {
                    "length": 32,
                    "start": 9903
                  },
                  {
                    "length": 32,
                    "start": 10112
                  },
                  {
                    "length": 32,
                    "start": 13583
                  },
                  {
                    "length": 32,
                    "start": 13738
                  },
                  {
                    "length": 32,
                    "start": 13992
                  },
                  {
                    "length": 32,
                    "start": 17752
                  },
                  {
                    "length": 32,
                    "start": 18083
                  }
                ],
                "5138": [
                  {
                    "length": 32,
                    "start": 1462
                  },
                  {
                    "length": 32,
                    "start": 4389
                  },
                  {
                    "length": 32,
                    "start": 9708
                  },
                  {
                    "length": 32,
                    "start": 9770
                  },
                  {
                    "length": 32,
                    "start": 15169
                  },
                  {
                    "length": 32,
                    "start": 15295
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c8063959b8c3f1161019d578063cf387fed116100e9578063ee719bc8116100a2578063f8eef10f1161007c578063f8eef10f14610763578063fad8b32a1461077a578063fc673c4f1461078d578063fe9d9303146107a057600080fd5b8063ee719bc8146106fd578063ef8b30f714610724578063f23a6e611461073757600080fd5b8063cf387fed14610652578063d84878b81461066d578063d905777e14610680578063d95b637114610693578063dd62ed3e146106a6578063e16695b5146106df57600080fd5b8063b3d7f6b911610156578063c63d75b611610130578063c63d75b614610611578063c6e6f59214610624578063cb803ceb14610637578063ce96cb771461063f57600080fd5b8063b3d7f6b9146105d8578063b460af94146105eb578063ba087652146105fe57600080fd5b8063959b8c3f1461056857806395d89b411461057b5780639bd9bbc614610583578063a109329514610596578063a9059cbb1461059e578063ad5c4648146105b157600080fd5b8063313ce5671161025c57806351489551116102155780636e553f65116101ef5780636e553f651461050657806370a0823114610519578063745d08d91461054257806394bf804d1461055557600080fd5b806351489551146104ba578063556f0dc7146104ec57806362ad1b83146104f357600080fd5b8063313ce5671461043c57806338d52e0f146104515780633d3192cb14610459578063402d267d1461046c57806348d8f98d1461047f5780634cdad506146104a757600080fd5b80630a28a477116102c957806318160ddd116102a357806318160ddd146103cf57806319b53d35146103d757806323b872dd1461041657806329cf14051461042957600080fd5b80630a28a477146103945780630db8481c146103a7578063152b838c146103bc57600080fd5b806301e1d114146103115780630558d5001461032c57806306e485381461033457806306fdde031461034957806307a2d13a1461035e578063095ea7b314610371575b600080fd5b6103196107b3565b6040519081526020015b60405180910390f35b606554610319565b61033c6108e0565b6040516103239190614b90565b610351610942565b6040516103239190614c35565b61031961036c366004614c48565b6109cb565b61038461037f366004614c79565b610adc565b6040519015158152602001610323565b6103196103a2366004614c48565b610af4565b6103ba6103b5366004614ccc565b610be9565b005b6103ba6103ca366004614d42565b610bfd565b603454610319565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610323565b610384610424366004614d7b565b610fc9565b6103ba610437366004614ccc565b6110f7565b60085b60405160ff9091168152602001610323565b6103fe611105565b6103ba610467366004614dbc565b61114c565b61031961047a366004614dfe565b61118b565b6104876111a9565b6040805161ffff909316835264ffffffffff909116602083015201610323565b6103196104b5366004614c48565b6111cb565b6104cd6104c8366004614e29565b6112ac565b604080516001600160a01b039093168352901515602083015201610323565b6001610319565b6103ba610501366004614f54565b6112e4565b610319610514366004614fe6565b611320565b610319610527366004614dfe565b6001600160a01b031660009081526033602052604090205490565b6103ba610550366004614dbc565b6113da565b610319610563366004614fe6565b611419565b6103ba610576366004614dfe565b611477565b610351611595565b6103ba61059136600461500b565b6115a4565b6103846115c2565b6103846105ac366004614c79565b6115db565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6103196105e6366004614c48565b61168e565b6103196105f9366004615063565b6116d8565b61031961060c366004615063565b61175f565b61031961061f366004614dfe565b6118ee565b610319610632366004614c48565b61191b565b61043f611a25565b61031961064d366004614dfe565b611a5d565b61065a611a7f565b60405161ffff9091168152602001610323565b6103ba61067b36600461509a565b611a9e565b61031961068e366004614dfe565b611acc565b6103846106a136600461513e565b611aea565b6103196106b436600461513e565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b6106e7611b8b565b60405164ffffffffff9091168152602001610323565b610705611ba9565b604080516001600160a01b039093168352602083019190915201610323565b610319610732366004614c48565b611c91565b61074a61074536600461516c565b611cdb565b6040516001600160e01b03199091168152602001610323565b61076b612001565b6040516103239392919061522b565b6103ba610788366004614dfe565b6120bc565b6103ba61079b366004615260565b6121d8565b6103ba6107ae3660046152df565b61220a565b60006107bd6115c2565b156107cf576107ca612238565b905090565b60006107d9611ba9565b9150506000806107e76111a9565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c52c43e1848461082760345490565b6040516001600160e01b031960e086901b16815261ffff909316600484015264ffffffffff909116602483015260448201524260648201526000608482015260a401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190615325565b905060006305f5e1006108bd8684615354565b6108c791906153ef565b905060008112156108d757600080fd5b95945050505050565b6060603780548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161091a575b5050505050905090565b6060603580546109519061541d565b80601f016020809104026020016040519081016040528092919081815260200182805461097d9061541d565b80156109385780601f1061099f57610100808354040283529160200191610938565b820191906000526020600020905b8154815290600101906020018083116109ad57509395945050505050565b60006109d56115c2565b15610a0a5760006109e4612238565b90506109ef60345490565b6109f98285615452565b610a039190615471565b9392505050565b600080610a156111a9565b60405163aaae47b560e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482018190524260848301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aaae47b59060a401608060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190615496565b5091979650505050505050565b919050565b600033610aea8185856123bd565b5060019392505050565b6000610afe6115c2565b15610b1257610b0c8261191b565b92915050565b600080610b1d6111a9565b60405163bac9e8b160e01b815261ffff831660048201526024810187905264ffffffffff8216604482015260006064820152426084820152600160a482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bac9e8b19060c401606060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd691906154d3565b50506001600160581b0316949350505050565b610bf78484848460006124e4565b50505050565b600054610100900460ff16610c185760005460ff1615610c1c565b303b155b610c845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff16158015610ca6576000805461ffff19166101011790555b60405163d4ccb0ed60e01b815261ffff841660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d4ccb0ed90602401600060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d3991908101906155a1565b805190915060ff16610d805760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642063757272656e637960801b6044820152606401610c7b565b8051610d979060ff1664ffffffffff85164261283c565b610dd65760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964206d6174757269747960801b6044820152606401610c7b565b610ded61ffff851664ffffffffff8516600161288c565b6065556000610dfa611ba9565b5090506000610e07612001565b50909150600090506001600160a01b03831615610e8957826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8491908101906156d2565b610ea6565b6040518060400160405280600381526020016208aa8960eb1b8152505b90506000610eba8764ffffffffff166128e7565b9050610f128282604051602001610ed292919061573f565b6040516020818303038152906040528383604051602001610ef4929190615792565b60408051601f198184030181526000835260208301909152906129ec565b610f486001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b836001600160a01b0316836001600160a01b031614158015610f7257506001600160a01b03841615155b15610fad57610fad6001600160a01b0385167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b50505050508015610fc4576000805461ff00191690555b505050565b60006001600160a01b038316610ff15760405162461bcd60e51b8152600401610c7b906157dc565b6001600160a01b0384166110565760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610c7b565b6000339050611087818686866040518060200160405280600081525060405180602001604052806000815250612b66565b611092858285612c8e565b6110be818686866040518060200160405280600081525060405180602001604052806000815250612d1a565b6110ec8186868660405180602001604052806000815250604051806020016040528060008152506000612e80565b506001949350505050565b610bf78484848460016124e4565b600080600061111460016112ac565b91509150806111235781611145565b7f00000000000000000000000000000000000000000000000000000000000000005b9250505090565b610fc4836040518060800160405280600015158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b60006111956115c2565b6111a157600019610b0c565b600092915050565b6000806111c1606554603081901c91600882901c9190565b5090939092509050565b60006111d56115c2565b156111e357610b0c826109cb565b6000806111ee6111a9565b60405163416a158760e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482015242608482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063416a15879060a401608060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190615496565b50919695505050505050565b60008082156112c5576112bd611ba9565b5091506112d3565b6112cd612001565b50909250505b50916001600160a01b038316159150565b6112ee3386611aea565b61130a5760405162461bcd60e51b8152600401610c7b90615820565b61131985858585856001613045565b5050505050565b600061132b8261118b565b8311156113685760405162461bcd60e51b815260206004820152600b60248201526a13585e0811195c1bdcda5d60aa1b6044820152606401610c7b565b600061137384611c91565b905061138c8461138283613128565b85600060016124e4565b60408051858152602081018390526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a39392505050565b610fc4836040518060800160405280600115158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b6000806114258461168e565b90506114348161138286613128565b60408051828152602081018690526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791016113cb565b336001600160a01b03821614156114dc5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561152d57336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916905561155c565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060603680546109519061541d565b610fc433848484604051806020016040528060008152506001613045565b6000426115cd611b8b565b64ffffffffff161115905090565b60006001600160a01b0383166116035760405162461bcd60e51b8152600401610c7b906157dc565b6000339050611634818286866040518060200160405280600081525060405180602001604052806000815250612b66565b611660818286866040518060200160405280600081525060405180602001604052806000815250612d1a565b610aea8182868660405180602001604052806000815250604051806020016040528060008152506000612e80565b60006116986115c2565b156116cf5760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c826109cb565b6000806116e485610af4565b9050336001600160a01b0384161461170157611701833383612c8e565b61170c818585613142565b60408051868152602081018390526001600160a01b03808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4949350505050565b60008061176a611105565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa1580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190615325565b9050336001600160a01b038416146117f3576117f3833387612c8e565b6117fe858585613142565b6000611808611105565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa158015611850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118749190615325565b90506000611882838361586c565b9050846001600160a01b0316866001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db848b6040516118dc929190918252602082015260400190565b60405180910390a49695505050505050565b60006118f86115c2565b611909576001600160581b0361190c565b60005b6001600160581b031692915050565b60006119256115c2565b1561194a576000611934612238565b90508061194060345490565b6109f99085615452565b6000806119556111a9565b604051631f0750c160e31b815261ffff831660048201526024810187905264ffffffffff82166044820152600060648201819052426084830152600160a48301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f83a86089060c401606060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906154d3565b50506001600160581b031695945050505050565b6000806000611a446007611a37611b8b565b64ffffffffff16426131a7565b915091508015611a575760009250505090565b50919050565b6001600160a01b038116600090815260336020526040812054610b0c906109cb565b6000611a96606554603081901c91600882901c9190565b509092915050565b600081604051602001611ab19190615883565b6040516020818303038152906040529050610fc4838261220a565b6001600160a01b038116600090815260336020526040812054610b0c565b6000816001600160a01b0316836001600160a01b03161480611b5557506001600160a01b03831660009081526038602052604090205460ff168015611b5557506001600160a01b038083166000908152603a602090815260408083209387168352929052205460ff16155b80610a0357506001600160a01b0380831660009081526039602090815260408083209387168352929052205460ff169392505050565b6000611ba2606554603081901c91600882901c9190565b5092915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e611be6611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061594f565b9092509050600482606001516004811115611c6757611c67615215565b1415611c7f5750805160409091015190939092509050565b80516040909101519094909350915050565b6000611c9b6115c2565b15611cd25760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c8261191b565b600060026066541415611d005760405162461bcd60e51b8152600401610c7b90615985565b60026066556000611d1060655490565b9050336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611d4957508086145b8015611d555750600085135b611d8b5760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610c7b565b60405163b0de221760e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0de22179060240160a060405180830381865afa158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1691906159bc565b604051635a9b7fdb60e11b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b536ffb690602401600060405180830381865afa158015611e80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ea89190810190615a72565b60208301519091506001600160f81b031916158015611ec8575080516001145b8015611f37575082611f3582600081518110611ee657611ee6615b5b565b60200260200101516000015183600081518110611f0557611f05615b5b565b60200260200101516020015184600081518110611f2457611f24615b5b565b60200260200101516040015161288c565b145b611f4057600080fd5b6060808a6001600160a01b03168c6001600160a01b03161415611f9c5787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450611fd692505050565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b611fe48b8a848460006132f0565b505060016066555063f23a6e6160e01b9998505050505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e61203e611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a2919061594f565b508051604082015160609092015190969195509350915050565b6001600160a01b03811633141561211f5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561217357336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561219f565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6121e23385611aea565b6121fe5760405162461bcd60e51b8152600401610c7b90615820565b610bf784848484613439565b61222533838360405180602001604052806000815250613439565b5050565b6001600160a01b03163b151590565b600080612243611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122db9190615b71565b5050604051631baefc5d60e21b815261ffff8416600482015260248101829052600160448201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636ebbf17490606401602060405180830381865afa158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190615325565b905060008113610a035760405162461bcd60e51b815260206004820152600b60248201526a4d75737420536574746c6560a81b6044820152606401610c7b565b6001600160a01b0383166124215760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c7b565b6001600160a01b0382166124835760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c7b565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260665414156125075760405162461bcd60e51b8152600401610c7b90615985565b60026066556125146115c2565b156125515760405162461bcd60e51b815260206004820152600d60248201526c1990d85cda081b585d1d5c9959609a1b6044820152606401610c7b565b60008061255d836112ac565b915091506000816125d5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d09190615325565b6125d7565b475b90508115612734576126146001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b61375b565b604051632e1a7d4d60e01b8152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561267657600080fd5b505af115801561268a573d6000803e3d6000fd5b5050505060006126ab61269b611a7f565b6126a3611a25565b8b8b8a613793565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630276b64b8a30846040518463ffffffff1660e01b81526004016126fc929190615bda565b6000604051808303818588803b15801561271557600080fd5b505af1158015612729573d6000803e3d6000fd5b5050505050506127eb565b6127496001600160a01b03841633308b61375b565b6000612766612756611a7f565b61275e611a25565b8a8989613978565b604051630541f52760e41b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063541f5270906127b79030908590600401615caa565b600060405180830381600087803b1580156127d157600080fd5b505af11580156127e5573d6000803e3d6000fd5b50505050505b61282086886001600160581b0316604051806020016040528060008152506040518060200160405280600081525060006132f0565b61282c83338484613ab4565b5050600160665550505050505050565b60008061284883613c0c565b9050600061285586613c76565b61285f9083615d2e565b90508085111561287457600092505050610a03565b60006128808587613e4e565b98975050505050505050565b6000613fff84111561289d57600080fd5b64ffffffffff8311156128af57600080fd5b60088211156128bd57600080fd5b5067ffff000000000000603084901b1665ffffffffff00600884901b161760ff8216179392505050565b60608161290b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612935578061291f81615d46565b915061292e9050600a83615471565b915061290f565b6000816001600160401b0381111561294f5761294f614e46565b6040519080825280601f01601f191660200182016040528015612979576020820181803683370190505b5090505b84156129e45761298e60018361586c565b915061299b600a86615d61565b6129a6906030615d2e565b60f81b8183815181106129bb576129bb615b5b565b60200101906001600160f81b031916908160001a9053506129dd600a86615471565b945061297d565b949350505050565b600054610100900460ff16612a135760405162461bcd60e51b8152600401610c7b90615d75565b610fc4838383614039565b801580612a985750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190615325565b155b612b035760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610c7b565b6040516001600160a01b038316602482015260448101829052610fc490849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614223565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b9190615dc0565b90506001600160a01b03811615612c8557604051633ad5cbc160e11b81526001600160a01b038216906375ab978290612c52908a908a908a908a908a908a90600401615ddd565b600060405180830381600087803b158015612c6c57600080fd5b505af1158015612c80573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b038381166000908152603b60209081526040808320938616835292905220546000198114610bf75781811015612d0d5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610c7b565b610bf784848484036123bd565b6001600160a01b03851660009081526033602052604090205483811015612d935760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610c7b565b6001600160a01b03808716600090815260336020526040808220878503905591871681529081208054869290612dca908490615d2e565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051612e2293929190615e2a565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612e6f91815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190615dc0565b90506001600160a01b03811615612fa1576040516223de2960e01b81526001600160a01b038216906223de2990612f6a908b908b908b908b908b908b90600401615ddd565b600060405180830381600087803b158015612f8457600080fd5b505af1158015612f98573d6000803e3d6000fd5b5050505061303b565b811561303b576001600160a01b0386163b1561303b5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401610c7b565b5050505050505050565b6001600160a01b0386166130a65760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b6001600160a01b0385166130fc5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f20616464726573736044820152606401610c7b565b3361310b818888888888612b66565b613119818888888888612d1a565b612c8581888888888888612e80565b60006001600160581b0382111561313e57600080fd5b5090565b6040805160808101825260018152600060208083018290526001600160a01b03861683850152606083018290529251909261317e929101615883565b60408051601f1981840301815260208301909152600082529150610bf790839086908490613439565b600080600085116131f25760405162461bcd60e51b815260206004820152601560248201527410d1ce881b9bc81b585c9ad95d1cc81b1a5cdd1959605a1b6044820152606401610c7b565b600785111561323c5760405162461bcd60e51b815260206004820152601660248201527510d1ce881b585c9ad95d081a5b99195e08189bdd5b9960521b6044820152606401610c7b565b600061324784613c0c565b905060015b8681116132a957600061325e82613c76565b6132689084615d2e565b90508681141561328057509250600091506132e89050565b8681111561329657509250600191506132e89050565b50806132a181615d46565b91505061324c565b5060405162461bcd60e51b815260206004820152601360248201527210d1ce881b9bc81b585c9ad95d08199bdd5b99606a1b6044820152606401610c7b565b935093915050565b6001600160a01b0385166133465760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c7b565b6000339050846034600082825461335d9190615d2e565b90915550506001600160a01b0386166000908152603360205260408120805487929061338a908490615d2e565b909155506133a090508160008888888888612e80565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516133e793929190615e2a565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050505050565b6002606654141561345c5760405162461bcd60e51b8152600401610c7b90615985565b6002606655600061346c60345490565b90506000838060200190518101906134849190615e5f565b60408101519091506001600160a01b03166134e15760405162461bcd60e51b815260206004820152601860248201527f5265636569766572206973207a65726f206164647265737300000000000000006044820152606401610c7b565b6134ed868686866142f5565b6134f56115c2565b1561369c5760405163f667f89760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f667f89790602401600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b50505050600061357d611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156135f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136159190615b71565b50509050806000126136615760405162461bcd60e51b81526020600482015260156024820152744e6567617469766520436173682042616c616e636560581b6044820152606401610c7b565b60008461366e8984615452565b6136789190615471565b905061369383856040015161368c84613128565b875161449e565b5050505061374e565b806020015115613734577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f242432a3083604001516136e460655490565b89896040518663ffffffff1660e01b8152600401613706959493929190615ee3565b600060405180830381600087803b15801561372057600080fd5b505af1158015613693573d6000803e3d6000fd5b61374c816040015186836000015184606001516145da565b505b5050600160665550505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610bf79085906323b872dd60e01b90608401612b2f565b604080516001808252818301909252606091816020015b6137b2614a60565b8152602001906001900390816137aa5790505090506002816000815181106137dc576137dc615b5b565b60200260200101516000019060068111156137f9576137f9615215565b9081600681111561380c5761380c615215565b81525050858160008151811061382457613824615b5b565b60200260200101516020019061ffff16908161ffff1681525050838160008151811061385257613852615b5b565b6020026020010151604001818152505060018160008151811061387757613877615b5b565b602002602001015160800190151590811515815250506001816000815181106138a2576138a2615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106138e9576138e9615b5b565b602090810291909101015160c0015263ffffffff60781b607883901b16600160981b600160f01b03609885901b1660ff60f01b60f088901b1660f860005b60ff16901b17171760001b8160008151811061394557613945615b5b565b602002602001015160c0015160008151811061396357613963615b5b565b60200260200101818152505095945050505050565b604080516001808252818301909252606091816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161398f57905050905085816000815181106139d4576139d4615b5b565b60200260200101516000019061ffff16908161ffff16815250508181600081518110613a0257613a02615b5b565b602090810291909101810151911515910152604080516001808252818301909252908160200160208202803683370190505081600081518110613a4757613a47615b5b565b602090810291909101015160400152805160f086901b60ff60f01b16609886901b600160981b600160f01b031617607885901b63ffffffff60781b1617908290600090613a9657613a96615b5b565b60200260200101516040015160008151811061396357613963615b5b565b60008083613b29576040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190615325565b613b2b565b475b9050613b37838261586c565b91508315613bef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b9a57600080fd5b505af1158015613bae573d6000803e3d6000fd5b50613bea9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915087905084614725565b613c03565b613c036001600160a01b0387168684614725565b50949350505050565b6000613c1c620151806006615452565b613c27906005615452565b613c32906003615452565b821015613c3e57600080fd5b613c4c620151806006615452565b613c57906005615452565b613c62906003615452565b613c6c9083615d61565b610b0c908361586c565b60008160011415613ca557613c8f620151806006615452565b613c9a906005615452565b610b0c906003615452565b8160021415613cdd57613cbc620151806006615452565b613cc7906005615452565b613cd2906003615452565b610b0c906002615452565b8160031415613d1557613cf4620151806006615452565b613cff906005615452565b613d0a906003615452565b610b0c906004615452565b8160041415613d4d57613d2c620151806006615452565b613d37906005615452565b613d42906003615452565b613cd2906004615452565b8160051415613d9057613d64620151806006615452565b613d6f906005615452565b613d7a906003615452565b613d85906004615452565b610b0c906005615452565b8160061415613dd357613da7620151806006615452565b613db2906005615452565b613dbd906003615452565b613dc8906004615452565b610b0c90600a615452565b8160071415613e1657613dea620151806006615452565b613df5906005615452565b613e00906003615452565b613e0b906004615452565b610b0c906014615452565b60405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610c7b565b6000806000613e5c85614755565b9050613e6b6201518085615d61565b15613e7d576000809250925050614032565b838110613e91576000809250925050614032565b600062015180613ea1838761586c565b613eab9190615471565b9050605a8111613ec2579250600191506140329050565b6101688111613f3757600062015180613edc816006615452565b613ee69085615d61565b613ef09190615471565b613efb605a8461586c565b613f059190615d2e565b9050613f12600682615471565b613f1d90605a615d2e565b613f28600683615d61565b60001494509450505050614032565b6108708111613fa957600062015180613f51816006615452565b613f5c906005615452565b613f669085615d61565b613f709190615471565b613f7c6101688461586c565b613f869190615d2e565b9050613f93601e82615471565b613f9e906087615d2e565b613f28601e83615d61565b611de2811161402657600062015180613fc3816006615452565b613fce906005615452565b613fd9906003615452565b613fe39085615d61565b613fed9190615471565b613ff96108708461586c565b6140039190615d2e565b9050614010605a82615471565b61401b9060c3615d2e565b613f28605a83615d61565b61010060009350935050505b9250929050565b600054610100900460ff166140605760405162461bcd60e51b8152600401610c7b90615d75565b8251614073906035906020860190614aa6565b508151614087906036906020850190614aa6565b50805161409b906037906020840190614b26565b5060005b8151811015614104576001603860008484815181106140c0576140c0615b5b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806140fc81615d46565b91505061409f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b15801561417e57600080fd5b505af1158015614192573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561420f57600080fd5b505af1158015612c85573d6000803e3d6000fd5b6000614278826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166147749092919063ffffffff16565b805190915015610fc457808060200190518101906142969190615f1d565b610fc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c7b565b6001600160a01b0384166143565760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b3361436681866000878787612b66565b6001600160a01b038516600090815260336020526040902054848110156143db5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b6064820152608401610c7b565b6001600160a01b038616600090815260336020526040812086830390556034805487929061440a90849061586c565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161445893929190615e2a565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001613429565b60008060006144ac846112ac565b91509150600081614524576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156144fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451f9190615325565b614526565b475b604051625e665d60e31b815261ffff8a1660048201526001600160581b038816602482015286151560448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302f332e8906064016020604051808303816000875af11580156145a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145cd9190615325565b5061288083888484613ab4565b60008060006145e8856112ac565b91509150600081614660576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015614637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465b9190615325565b614662565b475b90506000614689614671611a7f565b614679611a25565b6146828b613128565b898b614783565b604051630276b64b60e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630276b64b906146da9030908590600401615bda565b600060405180830381600087803b1580156146f457600080fd5b505af1158015614708573d6000803e3d6000fd5b50505050614718848a8585613ab4565b9998505050505050505050565b6040516001600160a01b038316602482015260448101829052610fc490849063a9059cbb60e01b90606401612b2f565b60006201518082101561476757600080fd5b613c6c6201518083615d61565b60606129e484846000856148f6565b604080516001808252818301909252606091816020015b6147a2614a60565b81526020019060019003908161479a5790505090506000816000815181106147cc576147cc615b5b565b60200260200101516000019060068111156147e9576147e9615215565b908160068111156147fc576147fc615215565b81525050858160008151811061481457614814615b5b565b60200260200101516020019061ffff16908161ffff168152505060018160008151811061484357614843615b5b565b60200260200101516080019015159081151581525050818160008151811061486d5761486d615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106148b4576148b4615b5b565b602090810291909101015160c0015263ffffffff60781b607884901b16600160981b600160f01b03609886901b1660ff60f01b60f088901b1660f86001613927565b6060824710156149575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c7b565b6001600160a01b0385163b6149ae5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c7b565b600080866001600160a01b031685876040516149ca9190615f3a565b60006040518083038185875af1925050503d8060008114614a07576040519150601f19603f3d011682016040523d82523d6000602084013e614a0c565b606091505b5091509150614a1c828286614a27565b979650505050505050565b60608315614a36575081610a03565b825115614a465782518084602001fd5b8160405162461bcd60e51b8152600401610c7b9190614c35565b6040805160e081019091528060008152602001600061ffff1681526020016000815260200160008152602001600015158152602001600015158152602001606081525090565b828054614ab29061541d565b90600052602060002090601f016020900481019282614ad45760008555614b1a565b82601f10614aed57805160ff1916838001178555614b1a565b82800160010185558215614b1a579182015b82811115614b1a578251825591602001919060010190614aff565b5061313e929150614b7b565b828054828255906000526020600020908101928215614b1a579160200282015b82811115614b1a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614b46565b5b8082111561313e5760008155600101614b7c565b6020808252825182820181905260009190848201906040850190845b81811015614bd15783516001600160a01b031683529284019291840191600101614bac565b50909695505050505050565b60005b83811015614bf8578181015183820152602001614be0565b83811115610bf75750506000910152565b60008151808452614c21816020860160208601614bdd565b601f01601f19169290920160200192915050565b602081526000610a036020830184614c09565b600060208284031215614c5a57600080fd5b5035919050565b6001600160a01b0381168114614c7657600080fd5b50565b60008060408385031215614c8c57600080fd5b8235614c9781614c61565b946020939093013593505050565b6001600160581b0381168114614c7657600080fd5b63ffffffff81168114614c7657600080fd5b60008060008060808587031215614ce257600080fd5b843593506020850135614cf481614ca5565b92506040850135614d0481614c61565b91506060850135614d1481614cba565b939692955090935050565b61ffff81168114614c7657600080fd5b64ffffffffff81168114614c7657600080fd5b60008060408385031215614d5557600080fd5b8235614d6081614d1f565b91506020830135614d7081614d2f565b809150509250929050565b600080600060608486031215614d9057600080fd5b8335614d9b81614c61565b92506020840135614dab81614c61565b929592945050506040919091013590565b600080600060608486031215614dd157600080fd5b833592506020840135614de381614c61565b91506040840135614df381614cba565b809150509250925092565b600060208284031215614e1057600080fd5b8135610a0381614c61565b8015158114614c7657600080fd5b600060208284031215614e3b57600080fd5b8135610a0381614e1b565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e7f57614e7f614e46565b60405290565b60405160c081016001600160401b0381118282101715614e7f57614e7f614e46565b604051601f8201601f191681016001600160401b0381118282101715614ecf57614ecf614e46565b604052919050565b60006001600160401b03821115614ef057614ef0614e46565b50601f01601f191660200190565b600082601f830112614f0f57600080fd5b8135614f22614f1d82614ed7565b614ea7565b818152846020838601011115614f3757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614f6c57600080fd5b8535614f7781614c61565b94506020860135614f8781614c61565b93506040860135925060608601356001600160401b0380821115614faa57600080fd5b614fb689838a01614efe565b93506080880135915080821115614fcc57600080fd5b50614fd988828901614efe565b9150509295509295909350565b60008060408385031215614ff957600080fd5b823591506020830135614d7081614c61565b60008060006060848603121561502057600080fd5b833561502b81614c61565b92506020840135915060408401356001600160401b0381111561504d57600080fd5b61505986828701614efe565b9150509250925092565b60008060006060848603121561507857600080fd5b83359250602084013561508a81614c61565b91506040840135614df381614c61565b60008082840360a08112156150ae57600080fd5b833592506080601f19820112156150c457600080fd5b50604051608081018181106001600160401b03821117156150e7576150e7614e46565b60405260208401356150f881614e1b565b8152604084013561510881614e1b565b6020820152606084013561511b81614c61565b6040820152608084013561512e81614cba565b6060820152919491935090915050565b6000806040838503121561515157600080fd5b823561515c81614c61565b91506020830135614d7081614c61565b60008060008060008060a0878903121561518557600080fd5b863561519081614c61565b955060208701356151a081614c61565b9450604087013593506060870135925060808701356001600160401b03808211156151ca57600080fd5b818901915089601f8301126151de57600080fd5b8135818111156151ed57600080fd5b8a60208285010111156151ff57600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038416815260208101839052606081016005831061525257615252615215565b826040830152949350505050565b6000806000806080858703121561527657600080fd5b843561528181614c61565b93506020850135925060408501356001600160401b03808211156152a457600080fd5b6152b088838901614efe565b935060608701359150808211156152c657600080fd5b506152d387828801614efe565b91505092959194509250565b600080604083850312156152f257600080fd5b8235915060208301356001600160401b0381111561530f57600080fd5b61531b85828601614efe565b9150509250929050565b60006020828403121561533757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b038184138284138082168684048611161561537a5761537a61533e565b600160ff1b60008712828116878305891216156153995761539961533e565b600087129250878205871284841616156153b5576153b561533e565b878505871281841616156153cb576153cb61533e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b6000826153fe576153fe6153d9565b600160ff1b8214600019841416156154185761541861533e565b500590565b600181811c9082168061543157607f821691505b60208210811415611a5757634e487b7160e01b600052602260045260246000fd5b600081600019048311821515161561546c5761546c61533e565b500290565b600082615480576154806153d9565b500490565b805160ff81168114610ad757600080fd5b600080600080608085870312156154ac57600080fd5b84519350602085015192506154c360408601615485565b6060959095015193969295505050565b6000806000606084860312156154e857600080fd5b83516154f381614ca5565b925061550160208501615485565b9150604084015190509250925092565b60006001600160401b0382111561552a5761552a614e46565b5060051b60200190565b600082601f83011261554557600080fd5b81516020615555614f1d83615511565b82815260059290921b8401810191818101908684111561557457600080fd5b8286015b848110156155965761558981615485565b8352918301918301615578565b509695505050505050565b6000602082840312156155b357600080fd5b81516001600160401b03808211156155ca57600080fd5b9083019061016082860312156155df57600080fd5b6155e7614e5c565b6155f083615485565b81526155fe60208401615485565b602082015261560f60408401615485565b604082015261562060608401615485565b606082015261563160808401615485565b608082015261564260a08401615485565b60a082015261565360c08401615485565b60c082015261566460e08401615485565b60e0820152610100615677818501615485565b90820152610120838101518381111561568f57600080fd5b61569b88828701615534565b82840152505061014080840151838111156156b557600080fd5b6156c188828701615534565b918301919091525095945050505050565b6000602082840312156156e457600080fd5b81516001600160401b038111156156fa57600080fd5b8201601f8101841361570b57600080fd5b8051615719614f1d82614ed7565b81815285602083850101111561572e57600080fd5b6108d7826020830160208601614bdd565b682bb930b83832b2103360b91b815260008351615763816009850160208801614bdd565b6201020160ed1b600991840191820152835161578681600c840160208801614bdd565b01600c01949350505050565b613bb360f11b8152600083516157af816002850160208801614bdd565b601d60f91b60029184019182015283516157d0816003840160208801614bdd565b01600301949350505050565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b60008282101561587e5761587e61533e565b500390565b8151151581526020808301511515908201526040808301516001600160a01b03169082015260609182015163ffffffff169181019190915260800190565b600060a082840312156158d357600080fd5b60405160a081018181106001600160401b03821117156158f5576158f5614e46565b8060405250809150825161590881614c61565b8152602083015161591881614e1b565b60208201526040838101519082015260608301516005811061593957600080fd5b6060820152608092830151920191909152919050565b600080610140838503121561596357600080fd5b61596d84846158c1565b915061597c8460a085016158c1565b90509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060a082840312156159ce57600080fd5b60405160a081018181106001600160401b03821117156159f0576159f0614e46565b60405282516159fe81614d2f565b815260208301516001600160f81b031981168114615a1b57600080fd5b6020820152615a2c60408401615485565b60408201526060830151615a3f81614d1f565b606082015260808301516dffffffffffffffffffffffffffff1981168114615a6657600080fd5b60808201529392505050565b60006020808385031215615a8557600080fd5b82516001600160401b03811115615a9b57600080fd5b8301601f81018513615aac57600080fd5b8051615aba614f1d82615511565b81815260c09182028301840191848201919088841115615ad957600080fd5b938501935b83851015615b4f5780858a031215615af65760008081fd5b615afe614e85565b85518152868601518782015260408087015190820152606080870151908201526080808701519082015260a08087015160038110615b3c5760008081fd5b9082015283529384019391850191615ade565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215615b8657600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015615bcf57815187529582019590820190600101615bb3565b509495945050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57605f198a8403018552815160e0815160078110615c3857615c38615215565b85528188015161ffff1688860152898201518a860152888201518986015260808083015115159086015260a08083015115159086015260c091820151918501819052615c8681860183615b9f565b968801969450505090850190600101615c11565b50909a9950505050505050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57898303605f190185528151805161ffff16845286810151151587850152880151888401889052615d1b88850182615b9f565b9587019593505090850190600101615ce1565b60008219821115615d4157615d4161533e565b500190565b6000600019821415615d5a57615d5a61533e565b5060010190565b600082615d7057615d706153d9565b500690565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615dd257600080fd5b8151610a0381614c61565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090615e1890830185614c09565b82810360a08401526147188185614c09565b838152606060208201526000615e436060830185614c09565b8281036040840152615e558185614c09565b9695505050505050565b600060808284031215615e7157600080fd5b604051608081018181106001600160401b0382111715615e9357615e93614e46565b6040528251615ea181614e1b565b81526020830151615eb181614e1b565b60208201526040830151615ec481614c61565b60408201526060830151615ed781614cba565b60608201529392505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614a1c90830184614c09565b600060208284031215615f2f57600080fd5b8151610a0381614e1b565b60008251615f4c818460208701614bdd565b919091019291505056fea26469706673582212203a7f734b482cda160a7e96ede0f03e6e236489c70bae1c711713324ec8fb4dba64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x959B8C3F GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCF387FED GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEE719BC8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF8EEF10F GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF8EEF10F EQ PUSH2 0x763 JUMPI DUP1 PUSH4 0xFAD8B32A EQ PUSH2 0x77A JUMPI DUP1 PUSH4 0xFC673C4F EQ PUSH2 0x78D JUMPI DUP1 PUSH4 0xFE9D9303 EQ PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xEE719BC8 EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF387FED EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xD84878B8 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD95B6371 EQ PUSH2 0x693 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0xE16695B5 EQ PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xC63D75B6 GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xCB803CEB EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x5D8 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5EB JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x959B8C3F EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x9BD9BBC6 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xA1093295 EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x51489551 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x6E553F65 GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x745D08D9 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x51489551 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x62AD1B83 EQ PUSH2 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x3D3192CB EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x48D8F98D EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x19B53D35 EQ PUSH2 0x3D7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x29CF1405 EQ PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xDB8481C EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x152B838C EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x558D500 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x6E48538 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x371 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x65 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x33C PUSH2 0x8E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4B90 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x942 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x9CB JUMP JUMPDEST PUSH2 0x384 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0xADC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0xBE9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3BA PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4D42 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D7B JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x8 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3FE PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x467 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x114C JUMP JUMPDEST PUSH2 0x319 PUSH2 0x47A CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x118B JUMP JUMPDEST PUSH2 0x487 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x11CB JUMP JUMPDEST PUSH2 0x4CD PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E29 JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x501 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F54 JUMP JUMPDEST PUSH2 0x12E4 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1320 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x550 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x563 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1419 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x576 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1477 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x500B JUMP JUMPDEST PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x168E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x16D8 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x60C CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x175F JUMP JUMPDEST PUSH2 0x319 PUSH2 0x61F CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x18EE JUMP JUMPDEST PUSH2 0x319 PUSH2 0x632 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x191B JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1A5D JUMP JUMPDEST PUSH2 0x65A PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x509A JUMP JUMPDEST PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1ACC JUMP JUMPDEST PUSH2 0x384 PUSH2 0x6A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x6B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x1B8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x705 PUSH2 0x1BA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x732 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x1C91 JUMP JUMPDEST PUSH2 0x74A PUSH2 0x745 CALLDATASIZE PUSH1 0x4 PUSH2 0x516C JUMP JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x76B PUSH2 0x2001 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x522B JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x20BC JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x5260 JUMP JUMPDEST PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x52DF JUMP JUMPDEST PUSH2 0x220A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7BD PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x7CF JUMPI PUSH2 0x7CA PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D9 PUSH2 0x1BA9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0x7E7 PUSH2 0x11A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC52C43E1 DUP5 DUP5 PUSH2 0x827 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AA SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH4 0x5F5E100 PUSH2 0x8BD DUP7 DUP5 PUSH2 0x5354 JUMP JUMPDEST PUSH2 0x8C7 SWAP2 SWAP1 PUSH2 0x53EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLT ISZERO PUSH2 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x938 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x91A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x35 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x97D SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x938 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x99F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x938 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x9AD JUMPI POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 PUSH2 0x9E4 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP PUSH2 0x9EF PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 DUP3 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA15 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xAAAE47B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xAAAE47B5 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xACA SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xAEA DUP2 DUP6 DUP6 PUSH2 0x23BD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFE PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xB12 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB1D PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBAC9E8B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xBAC9E8B1 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBD6 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x24E4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC18 JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC1C JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO JUMPDEST PUSH2 0xC84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x101 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD4CCB0ED PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD4CCB0ED SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD39 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x55A1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C69642063757272656E6379 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD97 SWAP1 PUSH1 0xFF AND PUSH5 0xFFFFFFFFFF DUP6 AND TIMESTAMP PUSH2 0x283C JUMP JUMPDEST PUSH2 0xDD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C6964206D61747572697479 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xDED PUSH2 0xFFFF DUP6 AND PUSH5 0xFFFFFFFFFF DUP6 AND PUSH1 0x1 PUSH2 0x288C JUMP JUMPDEST PUSH1 0x65 SSTORE PUSH1 0x0 PUSH2 0xDFA PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0xE07 PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE89 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xE84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x56D2 JUMP JUMPDEST PUSH2 0xEA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x8AA89 PUSH1 0xEB SHL DUP2 MSTORE POP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEBA DUP8 PUSH5 0xFFFFFFFFFF AND PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP PUSH2 0xF12 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xED2 SWAP3 SWAP2 SWAP1 PUSH2 0x573F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEF4 SWAP3 SWAP2 SWAP1 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x29EC JUMP JUMPDEST PUSH2 0xF48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xFAD JUMPI PUSH2 0xFAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST POP POP POP POP POP DUP1 ISZERO PUSH2 0xFC4 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1056 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E736665722066726F6D20746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1087 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1092 DUP6 DUP3 DUP6 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x10BE DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x10EC DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1114 PUSH1 0x1 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH2 0x1123 JUMPI DUP2 PUSH2 0x1145 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1195 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x11A1 JUMPI PUSH1 0x0 NOT PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11C1 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x11E3 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11EE PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x416A1587 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x416A1587 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x127C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x12C5 JUMPI PUSH2 0x12BD PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP2 POP PUSH2 0x12D3 JUMP JUMPDEST PUSH2 0x12CD PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO SWAP2 POP JUMP JUMPDEST PUSH2 0x12EE CALLER DUP7 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0x1319 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132B DUP3 PUSH2 0x118B JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1368 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x13585E0811195C1BDCDA5D PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1373 DUP5 PUSH2 0x1C91 JUMP JUMPDEST SWAP1 POP PUSH2 0x138C DUP5 PUSH2 0x1382 DUP4 PUSH2 0x3128 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1425 DUP5 PUSH2 0x168E JUMP JUMPDEST SWAP1 POP PUSH2 0x1434 DUP2 PUSH2 0x1382 DUP7 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD PUSH2 0x13CB JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x14DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617574686F72697A696E672073656C66206173206F706572 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x30BA37B9 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x152D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x155C JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xF4CAEB2D6CA8932A215A353D0703C326EC2D81FC68170F320EB2AB49E9DF61F9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST PUSH2 0xFC4 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP PUSH2 0x15CD PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND GT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1603 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1634 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1660 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0xAEA DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1698 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x16CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16E4 DUP6 PUSH2 0xAF4 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1701 JUMPI PUSH2 0x1701 DUP4 CALLER DUP4 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x170C DUP2 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND SWAP3 SWAP1 DUP8 AND SWAP2 CALLER SWAP2 PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x176A PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17D6 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x17F3 JUMPI PUSH2 0x17F3 DUP4 CALLER DUP8 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x17FE DUP6 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1808 PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1874 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1882 DUP4 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP5 DUP12 PUSH1 0x40 MLOAD PUSH2 0x18DC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18F8 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x1909 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB PUSH2 0x190C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1925 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x194A JUMPI PUSH1 0x0 PUSH2 0x1934 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1940 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 SWAP1 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1955 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1F0750C1 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xF83A8608 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A11 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A44 PUSH1 0x7 PUSH2 0x1A37 PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND TIMESTAMP PUSH2 0x31A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 ISZERO PUSH2 0x1A57 JUMPI PUSH1 0x0 SWAP3 POP POP POP SWAP1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C SWAP1 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A96 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1AB1 SWAP2 SWAP1 PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xFC4 DUP4 DUP3 PUSH2 0x220A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0xA03 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA2 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x1BE6 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C26 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C4A SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x4 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1C67 JUMPI PUSH2 0x1C67 PUSH2 0x5215 JUMP JUMPDEST EQ ISZERO PUSH2 0x1C7F JUMPI POP DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C9B PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x1D00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x1D10 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x1D49 JUMPI POP DUP1 DUP7 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1D55 JUMPI POP PUSH1 0x0 DUP6 SGT JUMPDEST PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x125B9D985B1A59 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB0DE2217 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB0DE2217 SWAP1 PUSH1 0x24 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E16 SWAP2 SWAP1 PUSH2 0x59BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A9B7FDB PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB536FFB6 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1EA8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5A72 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND ISZERO DUP1 ISZERO PUSH2 0x1EC8 JUMPI POP DUP1 MLOAD PUSH1 0x1 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1F37 JUMPI POP DUP3 PUSH2 0x1F35 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1EE6 JUMPI PUSH2 0x1EE6 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F05 JUMPI PUSH2 0x1F05 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F24 JUMPI PUSH2 0x1F24 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x288C JUMP JUMPDEST EQ JUMPDEST PUSH2 0x1F40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1F9C JUMPI DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0x1FD6 SWAP3 POP POP POP JUMP JUMPDEST DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP JUMPDEST PUSH2 0x1FE4 DUP12 DUP11 DUP5 DUP5 PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x203E PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A2 SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST POP DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP7 SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ ISZERO PUSH2 0x211F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207265766F6B696E672073656C66206173206F70657261746F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2173 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x219F JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x50546E66E5F44D728365DC3908C63BC5CFEEAB470722C1677E3073A6AC294AA1 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x21E2 CALLER DUP6 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x21FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x2225 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3439 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2243 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22DB SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x1BAEFC5D PUSH1 0xE2 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6EBBF174 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x237D SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SGT PUSH2 0xA03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x4D75737420536574746C65 PUSH1 0xA8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2421 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F76652066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F766520746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x2507 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH2 0x2514 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x2551 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1990D85CDA081B585D1D5C9959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x255D DUP4 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x25D5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25D0 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x25D7 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x2734 JUMPI PUSH2 0x2614 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x268A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x26AB PUSH2 0x269B PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x26A3 PUSH2 0x1A25 JUMP JUMPDEST DUP12 DUP12 DUP11 PUSH2 0x3793 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x276B64B DUP11 ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26FC SWAP3 SWAP2 SWAP1 PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x27EB JUMP JUMPDEST PUSH2 0x2749 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2766 PUSH2 0x2756 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x275E PUSH2 0x1A25 JUMP JUMPDEST DUP11 DUP10 DUP10 PUSH2 0x3978 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x541F527 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x541F5270 SWAP1 PUSH2 0x27B7 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CAA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2820 DUP7 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST PUSH2 0x282C DUP4 CALLER DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP4 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2855 DUP7 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x285F SWAP1 DUP4 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2874 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2880 DUP6 DUP8 PUSH2 0x3E4E JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFF DUP5 GT ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x28AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 DUP3 GT ISZERO PUSH2 0x28BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xFFFF000000000000 PUSH1 0x30 DUP5 SWAP1 SHL AND PUSH6 0xFFFFFFFFFF00 PUSH1 0x8 DUP5 SWAP1 SHL AND OR PUSH1 0xFF DUP3 AND OR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x290B JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2935 JUMPI DUP1 PUSH2 0x291F DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP PUSH2 0x292E SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x5471 JUMP JUMPDEST SWAP2 POP PUSH2 0x290F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x294F JUMPI PUSH2 0x294F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2979 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x29E4 JUMPI PUSH2 0x298E PUSH1 0x1 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP PUSH2 0x299B PUSH1 0xA DUP7 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x29A6 SWAP1 PUSH1 0x30 PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x29BB JUMPI PUSH2 0x29BB PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x29DD PUSH1 0xA DUP7 PUSH2 0x5471 JUMP JUMPDEST SWAP5 POP PUSH2 0x297D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2A13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST PUSH2 0xFC4 DUP4 DUP4 DUP4 PUSH2 0x4039 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x2A98 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A96 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x2B03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x4223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x29DDB589B1FB5FC7CF394961C1ADF5F8C6454761ADF795E67FE149F658ABE895 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C0B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2C85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3AD5CBC1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x75AB9782 SWAP1 PUSH2 0x2C52 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0xBF7 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2D0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20696E73756666696369656E7420616C6C6F77616E63650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x23BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0x2D93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220616D6F756E74206578636565647320 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x62616C616E6365 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0x2DCA SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6B541DDAA720DB2B10A4D0CDAC39B8D360425FC073085FAC19BC82614677987 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2E22 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0x2E6F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xB281FC8C12954D22544DB45DE3159A39272895B169A852B314F9CC762E44C53B PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F25 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x23DE29 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH3 0x23DE29 SWAP1 PUSH2 0x2F6A SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x303B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x303B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EXTCODESIZE ISZERO PUSH2 0x303B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x4D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20746F6B656E20726563697069656E7420636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20686173206E6F20696D706C656D656E74657220666F7220455243373737546F PUSH1 0x64 DUP3 ADD MSTORE PUSH13 0x1AD95B9CD49958DA5C1A595B9D PUSH1 0x9A SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0xC7B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x30A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E642066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x30FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E6420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x310B DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x3119 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x2C85 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP4 DUP6 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 MLOAD SWAP1 SWAP3 PUSH2 0x317E SWAP3 SWAP2 ADD PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 MSTORE SWAP2 POP PUSH2 0xBF7 SWAP1 DUP4 SWAP1 DUP7 SWAP1 DUP5 SWAP1 PUSH2 0x3439 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 GT PUSH2 0x31F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x10D1CE881B9BC81B585C9AD95D1CC81B1A5CDD1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x7 DUP6 GT ISZERO PUSH2 0x323C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x10D1CE881B585C9AD95D081A5B99195E08189BDD5B99 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3247 DUP5 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 JUMPDEST DUP7 DUP2 GT PUSH2 0x32A9 JUMPI PUSH1 0x0 PUSH2 0x325E DUP3 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x3268 SWAP1 DUP5 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ ISZERO PUSH2 0x3280 JUMPI POP SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 GT ISZERO PUSH2 0x3296 JUMPI POP SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST POP DUP1 PUSH2 0x32A1 DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x324C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10D1CE881B9BC81B585C9AD95D08199BDD5B99 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3346 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP DUP5 PUSH1 0x34 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x335D SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x338A SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x33A0 SWAP1 POP DUP2 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2FE5BE0146F74C5BCE36C0B80911AF6C7D86FF27E89D5CFA61FC681327954E5D DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x33E7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x345C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x346C PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3484 SWAP2 SWAP1 PUSH2 0x5E5F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636569766572206973207A65726F20616464726573730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0x34ED DUP7 DUP7 DUP7 DUP7 PUSH2 0x42F5 JUMP JUMPDEST PUSH2 0x34F5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x369C JUMPI PUSH1 0x40 MLOAD PUSH4 0xF667F897 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xF667F897 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x355B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x356F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x357D PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3615 SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP SWAP1 POP DUP1 PUSH1 0x0 SLT PUSH2 0x3661 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4E6567617469766520436173682042616C616E6365 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x366E DUP10 DUP5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3678 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH2 0x3693 DUP4 DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x368C DUP5 PUSH2 0x3128 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x449E JUMP JUMPDEST POP POP POP POP PUSH2 0x374E JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x3734 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF242432A ADDRESS DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x36E4 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3706 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5EE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x374C DUP2 PUSH1 0x40 ADD MLOAD DUP7 DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x45DA JUMP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xBF7 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x37B2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x37AA JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x37DC JUMPI PUSH2 0x37DC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x37F9 JUMPI PUSH2 0x37F9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x380C JUMPI PUSH2 0x380C PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3824 JUMPI PUSH2 0x3824 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3852 JUMPI PUSH2 0x3852 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3877 JUMPI PUSH2 0x3877 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38A2 JUMPI PUSH2 0x38A2 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38E9 JUMPI PUSH2 0x38E9 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP6 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 SHL OR OR OR PUSH1 0x0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3945 JUMPI PUSH2 0x3945 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x398F JUMPI SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x39D4 JUMPI PUSH2 0x39D4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A02 JUMPI PUSH2 0x3A02 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD SWAP2 ISZERO ISZERO SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A47 JUMPI PUSH2 0x3A47 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MSTORE DUP1 MLOAD PUSH1 0xF0 DUP7 SWAP1 SHL PUSH1 0xFF PUSH1 0xF0 SHL AND PUSH1 0x98 DUP7 SWAP1 SHL PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB AND OR PUSH1 0x78 DUP6 SWAP1 SHL PUSH4 0xFFFFFFFF PUSH1 0x78 SHL AND OR SWAP1 DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3A96 JUMPI PUSH2 0x3A96 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x3B29 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B24 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x3B2B JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x3B37 DUP4 DUP3 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP DUP4 ISZERO PUSH2 0x3BEF JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x3BEA SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP DUP8 SWAP1 POP DUP5 PUSH2 0x4725 JUMP JUMPDEST PUSH2 0x3C03 JUMP JUMPDEST PUSH2 0x3C03 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP7 DUP5 PUSH2 0x4725 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C27 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C32 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x3C3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C4C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C57 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C62 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C6C SWAP1 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0xB0C SWAP1 DUP4 PUSH2 0x586C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 EQ ISZERO PUSH2 0x3CA5 JUMPI PUSH2 0x3C8F PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C9A SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x2 EQ ISZERO PUSH2 0x3CDD JUMPI PUSH2 0x3CBC PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CC7 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x2 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x3 EQ ISZERO PUSH2 0x3D15 JUMPI PUSH2 0x3CF4 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CFF SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D0A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x4 EQ ISZERO PUSH2 0x3D4D JUMPI PUSH2 0x3D2C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D37 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D42 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x5 EQ ISZERO PUSH2 0x3D90 JUMPI PUSH2 0x3D64 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D6F SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D7A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D85 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x6 EQ ISZERO PUSH2 0x3DD3 JUMPI PUSH2 0x3DA7 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DB2 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DBD SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DC8 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0xA PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x7 EQ ISZERO PUSH2 0x3E16 JUMPI PUSH2 0x3DEA PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DF5 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E00 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E0B SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x14 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x92DCECC2D8D2C840D2DCC8CAF PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E5C DUP6 PUSH2 0x4755 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E6B PUSH3 0x15180 DUP6 PUSH2 0x5D61 JUMP JUMPDEST ISZERO PUSH2 0x3E7D JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x3E91 JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EA1 DUP4 DUP8 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3EAB SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH1 0x5A DUP2 GT PUSH2 0x3EC2 JUMPI SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x4032 SWAP1 POP JUMP JUMPDEST PUSH2 0x168 DUP2 GT PUSH2 0x3F37 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EDC DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3EE6 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3EF0 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3EFB PUSH1 0x5A DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F05 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F12 PUSH1 0x6 DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F1D SWAP1 PUSH1 0x5A PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x6 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x0 EQ SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH2 0x870 DUP2 GT PUSH2 0x3FA9 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3F51 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F5C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F66 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3F70 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F7C PUSH2 0x168 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F86 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F93 PUSH1 0x1E DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F9E SWAP1 PUSH1 0x87 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x1E DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x1DE2 DUP2 GT PUSH2 0x4026 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3FC3 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FCE SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FD9 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FE3 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3FED SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3FF9 PUSH2 0x870 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x4003 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x4010 PUSH1 0x5A DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x401B SWAP1 PUSH1 0xC3 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x5A DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x0 SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4060 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST DUP3 MLOAD PUSH2 0x4073 SWAP1 PUSH1 0x35 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP2 MLOAD PUSH2 0x4087 SWAP1 PUSH1 0x36 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x409B SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4B26 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4104 JUMPI PUSH1 0x1 PUSH1 0x38 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x40C0 JUMPI PUSH2 0x40C0 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 PUSH2 0x40FC DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x409F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAC7FBAB5F54A3CA8194167523C6753BFEB96A445279294B6125B68CCE2177054 PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0x29965A1D SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x417E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4192 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAEA199E31A596269B42CDAFD93407F14436DB6E4CAD65417994C2EB37381E05A PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP3 POP PUSH4 0x29965A1D SWAP2 POP PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4278 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4774 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xFC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4296 SWAP2 SWAP1 PUSH2 0x5F1D JUMP JUMPDEST PUSH2 0xFC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E2066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x4366 DUP2 DUP7 PUSH1 0x0 DUP8 DUP8 DUP8 PUSH2 0x2B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x43DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E20616D6F756E7420657863656564732062616C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x6E6365 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 DUP4 SUB SWAP1 SSTORE PUSH1 0x34 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x440A SWAP1 DUP5 SWAP1 PUSH2 0x586C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA78A9BE3A7B862D26933AD85FB11D80EF66B8F972D7CBBA06621D583943A4098 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x4458 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x3429 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44AC DUP5 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4524 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x451F SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4526 JUMP JUMPDEST SELFBALANCE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5E665D PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP11 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 ISZERO ISZERO PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2F332E8 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x45CD SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST POP PUSH2 0x2880 DUP4 DUP9 DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x45E8 DUP6 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4660 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4637 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x465B SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4662 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4689 PUSH2 0x4671 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x4679 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x4682 DUP12 PUSH2 0x3128 JUMP JUMPDEST DUP10 DUP12 PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x276B64B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x276B64B SWAP1 PUSH2 0x46DA SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4708 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4718 DUP5 DUP11 DUP6 DUP6 PUSH2 0x3AB4 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 LT ISZERO PUSH2 0x4767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C6C PUSH3 0x15180 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x29E4 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x48F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x47A2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x479A JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x47CC JUMPI PUSH2 0x47CC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47E9 JUMPI PUSH2 0x47E9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47FC JUMPI PUSH2 0x47FC PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4814 JUMPI PUSH2 0x4814 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4843 JUMPI PUSH2 0x4843 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x486D JUMPI PUSH2 0x486D PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x48B4 JUMPI PUSH2 0x48B4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP7 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x1 PUSH2 0x3927 JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4957 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x49AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x49CA SWAP2 SWAP1 PUSH2 0x5F3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4A07 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4A1C DUP3 DUP3 DUP7 PUSH2 0x4A27 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4A36 JUMPI POP DUP2 PUSH2 0xA03 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4A46 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x4AB2 SWAP1 PUSH2 0x541D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x4AD4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x4AED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4AFF JUMP JUMPDEST POP PUSH2 0x313E SWAP3 SWAP2 POP PUSH2 0x4B7B JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4B46 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B7C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4BD1 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4BAC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4BF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4BE0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBF7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4C21 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA03 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4C97 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4CF4 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x4D04 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4D14 DUP2 PUSH2 0x4CBA JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4D60 DUP2 PUSH2 0x4D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4D9B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DAB DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4DD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DE3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4CBA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4ECF JUMPI PUSH2 0x4ECF PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4EF0 JUMPI PUSH2 0x4EF0 PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4F0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4F22 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST PUSH2 0x4EA7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4F37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4F6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4F77 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4F87 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4FAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4FB6 DUP10 DUP4 DUP11 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FD9 DUP9 DUP3 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4FF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5020 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x502B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x504D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5059 DUP7 DUP3 DUP8 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x508A DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0xA0 DUP2 SLT ISZERO PUSH2 0x50AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x80 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x50C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x50E7 JUMPI PUSH2 0x50E7 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5108 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x511B DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH2 0x512E DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x515C DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5190 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x51A0 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x51CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x51DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x51ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x51FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD PUSH1 0x5 DUP4 LT PUSH2 0x5252 JUMPI PUSH2 0x5252 PUSH2 0x5215 JUMP JUMPDEST DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5281 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x52B0 DUP9 DUP4 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x52C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52D3 DUP8 DUP3 DUP9 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x530F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x531B DUP6 DUP3 DUP7 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 DUP5 SGT DUP3 DUP5 SGT DUP1 DUP3 AND DUP7 DUP5 DIV DUP7 GT AND ISZERO PUSH2 0x537A JUMPI PUSH2 0x537A PUSH2 0x533E JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL PUSH1 0x0 DUP8 SLT DUP3 DUP2 AND DUP8 DUP4 SDIV DUP10 SLT AND ISZERO PUSH2 0x5399 JUMPI PUSH2 0x5399 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x0 DUP8 SLT SWAP3 POP DUP8 DUP3 SDIV DUP8 SLT DUP5 DUP5 AND AND ISZERO PUSH2 0x53B5 JUMPI PUSH2 0x53B5 PUSH2 0x533E JUMP JUMPDEST DUP8 DUP6 SDIV DUP8 SLT DUP2 DUP5 AND AND ISZERO PUSH2 0x53CB JUMPI PUSH2 0x53CB PUSH2 0x533E JUMP JUMPDEST POP POP POP SWAP3 SWAP1 SWAP4 MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x53FE JUMPI PUSH2 0x53FE PUSH2 0x53D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ PUSH1 0x0 NOT DUP5 EQ AND ISZERO PUSH2 0x5418 JUMPI PUSH2 0x5418 PUSH2 0x533E JUMP JUMPDEST POP SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x5431 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1A57 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x546C JUMPI PUSH2 0x546C PUSH2 0x533E JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5480 JUMPI PUSH2 0x5480 PUSH2 0x53D9 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x54AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH2 0x54C3 PUSH1 0x40 DUP7 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x54F3 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH2 0x5501 PUSH1 0x20 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x552A JUMPI PUSH2 0x552A PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x5555 PUSH2 0x4F1D DUP4 PUSH2 0x5511 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x5574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x5596 JUMPI PUSH2 0x5589 DUP2 PUSH2 0x5485 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x5578 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x55CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH2 0x160 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x55DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55E7 PUSH2 0x4E5C JUMP JUMPDEST PUSH2 0x55F0 DUP4 PUSH2 0x5485 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x55FE PUSH1 0x20 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x560F PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x5620 PUSH1 0x60 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x5631 PUSH1 0x80 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x5642 PUSH1 0xA0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x5653 PUSH1 0xC0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x5664 PUSH1 0xE0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x5677 DUP2 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP4 DUP2 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x568F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569B DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x56B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56C1 DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x56FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x570B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5719 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x572E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH9 0x2BB930B83832B21033 PUSH1 0xB9 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x5763 DUP2 PUSH1 0x9 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH3 0x10201 PUSH1 0xED SHL PUSH1 0x9 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x5786 DUP2 PUSH1 0xC DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0xC ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x3BB3 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x57AF DUP2 PUSH1 0x2 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x2 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x57D0 DUP2 PUSH1 0x3 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0x3 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A2063616C6C6572206973206E6F7420616E206F70657261746F PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x39103337B9103437B63232B9 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x587E JUMPI PUSH2 0x587E PUSH2 0x533E JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST DUP2 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x58F5 JUMPI PUSH2 0x58F5 PUSH2 0x4E46 JUMP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP1 SWAP2 POP DUP3 MLOAD PUSH2 0x5908 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5918 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT PUSH2 0x5939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x596D DUP5 DUP5 PUSH2 0x58C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x597C DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x58C1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x59F0 JUMPI PUSH2 0x59F0 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x59FE DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5A1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x5A2C PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5A3F DUP2 PUSH2 0x4D1F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND DUP2 EQ PUSH2 0x5A66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x5AAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5ABA PUSH2 0x4F1D DUP3 PUSH2 0x5511 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0xC0 SWAP2 DUP3 MUL DUP4 ADD DUP5 ADD SWAP2 DUP5 DUP3 ADD SWAP2 SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x5AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x5B4F JUMPI DUP1 DUP6 DUP11 SUB SLT ISZERO PUSH2 0x5AF6 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AFE PUSH2 0x4E85 JUMP JUMPDEST DUP6 MLOAD DUP2 MSTORE DUP7 DUP7 ADD MLOAD DUP8 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 DUP1 DUP8 ADD MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x5B3C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP1 DUP3 ADD MSTORE DUP4 MSTORE SWAP4 DUP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH2 0x5ADE JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5B86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BCF JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5BB3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI PUSH1 0x5F NOT DUP11 DUP5 SUB ADD DUP6 MSTORE DUP2 MLOAD PUSH1 0xE0 DUP2 MLOAD PUSH1 0x7 DUP2 LT PUSH2 0x5C38 JUMPI PUSH2 0x5C38 PUSH2 0x5215 JUMP JUMPDEST DUP6 MSTORE DUP2 DUP9 ADD MLOAD PUSH2 0xFFFF AND DUP9 DUP7 ADD MSTORE DUP10 DUP3 ADD MLOAD DUP11 DUP7 ADD MSTORE DUP9 DUP3 ADD MLOAD DUP10 DUP7 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xC0 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5C86 DUP2 DUP7 ADD DUP4 PUSH2 0x5B9F JUMP JUMPDEST SWAP7 DUP9 ADD SWAP7 SWAP5 POP POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C11 JUMP JUMPDEST POP SWAP1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI DUP10 DUP4 SUB PUSH1 0x5F NOT ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH2 0xFFFF AND DUP5 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP6 ADD MSTORE DUP9 ADD MLOAD DUP9 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x5D1B DUP9 DUP6 ADD DUP3 PUSH2 0x5B9F JUMP JUMPDEST SWAP6 DUP8 ADD SWAP6 SWAP4 POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CE1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x5D41 JUMPI PUSH2 0x5D41 PUSH2 0x533E JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x5D5A JUMPI PUSH2 0x5D5A PUSH2 0x533E JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5D70 JUMPI PUSH2 0x5D70 PUSH2 0x53D9 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x5E18 SWAP1 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x4718 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5E43 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x5E55 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x5E93 JUMPI PUSH2 0x5E93 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x5EA1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5EB1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x5EC4 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5ED7 DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4A1C SWAP1 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5F2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5F4C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4BDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE PUSH32 0x734B482CDA160A7E96EDE0F03E6E236489C70BAE1C711713324EC8FB4DBA6473 PUSH16 0x6C634300080B00330000000000000000 ",
              "sourceMap": "275:144:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:941:37;;;:::i;:::-;;;160:25:43;;;148:2;133:18;1244:941:37;;;;;;;;3337:93:36;3415:8;;3337:93;;7330:130:2;;;:::i;:::-;;;;;;;:::i;3484:98::-;;;:::i;:::-;;;;;;;:::i;3522:875:37:-;;;;;;:::i;:::-;;:::i;9088:197:2:-;;;;;;:::i;:::-;;:::i;:::-;;;2512:14:43;;2505:22;2487:41;;2475:2;2460:18;9088:197:2;2347:187:43;5572:596:37;;;;;;:::i;:::-;;:::i;1337:269:38:-;;;;;;:::i;:::-;;:::i;:::-;;1406:1864:36;;;;;;:::i;:::-;;:::i;4277:145:2:-;4403:12;;4277:145;;778:39:36;;;;;;;;-1:-1:-1;;;;;4227:32:43;;;4209:51;;4197:2;4182:18;778:39:36;4043:223:43;9767:639:2;;;;;;:::i;:::-;;:::i;1975:273:38:-;;;;;;:::i;:::-;;:::i;4389:82:36:-;4463:1;4389:82;;;4904:4:43;4892:17;;;4874:36;;4862:2;4847:18;4389:82:36;4732:184:43;301:191:37;;;:::i;7318:386:38:-;;;;;;:::i;:::-;;:::i;4445:128:37:-;;;;;;:::i;:::-;;:::i;4142:177:36:-;;;:::i;:::-;;;;6040:6:43;6028:19;;;6010:38;;6096:12;6084:25;;;6079:2;6064:18;;6057:53;5983:18;4142:177:36;5840:276:43;6219:579:37;;;;;;:::i;:::-;;:::i;6212:309:36:-;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;6691:32:43;;;6673:51;;6767:14;;6760:22;6755:2;6740:18;;6733:50;6646:18;6212:309:36;6490:299:43;4121:95:2;4208:1;4121:95;;7579:366;;;;;;:::i;:::-;;:::i;6843:360:37:-;;;;;;:::i;:::-;;:::i;4522:172:2:-;;;;;;:::i;:::-;-1:-1:-1;;;;;4665:22:2;4639:7;4665:22;;;:9;:22;;;;;;;4522:172;7802:390:38;;;;;;:::i;:::-;;:::i;7245:290:37:-;;;;;;:::i;:::-;;:::i;6385:412:2:-;;;;;;:::i;:::-;;:::i;3638:102::-;;;:::i;4824:193::-;;;;;;:::i;:::-;;:::i;3748:114:36:-;;;:::i;5248:439:2:-;;;;;;:::i;:::-;;:::i;823:28:36:-;;;;;5353:166:37;;;;;;:::i;:::-;;:::i;7581:433::-;;;;;;:::i;:::-;;:::i;8058:713::-;;;;;;:::i;:::-;;:::i;4618:124::-;;;;;;:::i;:::-;;:::i;2238:1231::-;;;;;;:::i;:::-;;:::i;4630:406:36:-;;;:::i;4791:132:37:-;;;;;;:::i;:::-;;:::i;3922:158:36:-;;;:::i;:::-;;;10978:6:43;10966:19;;;10948:38;;10936:2;10921:18;3922:158:36;10804:188:43;6978:240:38;;;;;;:::i;:::-;;:::i;4970:113:37:-;;;;;;:::i;:::-;;:::i;6007:311:2:-;;;;;;:::i;:::-;;:::i;8630:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8746:19:2;;;8720:7;8746:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8630:151;3503:152:36;;;:::i;:::-;;;12637:12:43;12625:25;;;12607:44;;12595:2;12580:18;3503:152:36;12463:194:43;5247:502:36;;;:::i;:::-;;;;-1:-1:-1;;;;;12867:32:43;;;12849:51;;12931:2;12916:18;;12909:34;;;;12822:18;5247:502:36;12662:287:43;5135:169:37;;;;;;:::i;:::-;;:::i;5090:1742:38:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;14126:33:43;;;14108:52;;14096:2;14081:18;5090:1742:38;13964:202:43;5895:311:36;;;:::i;:::-;;;;;;;;;:::i;6861:403:2:-;;;;;;:::i;:::-;;:::i;8066:325::-;;;;;;:::i;:::-;;:::i;5817:127::-;;;;;;:::i;:::-;;:::i;1244:941:37:-;1297:7;1320:12;:10;:12::i;:::-;1316:863;;;1355:31;:29;:31::i;:::-;1348:38;;1244:941;:::o;1316:863::-;1425:16;1445:20;:18;:20::i;:::-;1417:48;;;1592:17;1611:15;1630:14;:12;:14::i;:::-;1591:53;;;;1658:17;1678:10;-1:-1:-1;;;;;1678:31:37;;1727:10;1755:8;1788:13;4403:12:2;;;4277:145;1788:13:37;1678:255;;-1:-1:-1;;;;;;1678:255:37;;;;;;;16153:6:43;16141:19;;;1678:255:37;;;16123:38:43;16209:12;16197:25;;;16177:18;;;16170:53;16239:18;;;16232:34;1881:15:37;16282:18:43;;;16275:34;1914:5:37;16325:19:43;;;16318:51;16095:19;;1678:255:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1658:275;-1:-1:-1;1948:17:37;423:3:30;1969:22:37;1982:9;1658:275;1969:22;:::i;:::-;1968:61;;;;:::i;:::-;1948:81;;2126:1;2112:10;:15;;2104:24;;;;;;2157:10;1244:941;-1:-1:-1;;;;;1244:941:37:o;7330:130:2:-;7396:16;7431:22;7424:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7424:29:2;;;;;;;;;;;;;;;;;;;;;;;7330:130;:::o;3484:98::-;3538:13;3570:5;3563:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3563:12:2;;3484:98;-1:-1:-1;;;;;3484:98:2:o;3522:875:37:-;3593:14;3623:12;:10;:12::i;:::-;3619:772;;;3651:26;3680:31;:29;:31::i;:::-;3651:60;;3878:13;4403:12:2;;;4277:145;3878:13:37;3847:27;3856:18;3847:6;:27;:::i;:::-;3846:45;;;;:::i;:::-;3839:52;3522:875;-1:-1:-1;;;3522:875:37:o;3619:772::-;4034:17;4053:15;4072:14;:12;:14::i;:::-;4157:178;;-1:-1:-1;;;4157:178:37;;18564:6:43;18552:19;;4157:178:37;;;18534:38:43;18588:18;;;18581:34;;;18663:12;18651:25;;18631:18;;;18624:53;4101:31:37;18693:18:43;;;18686:51;;;4306:15:37;18753:19:43;;;18746:35;4033:53:37;;-1:-1:-1;4033:53:37;;-1:-1:-1;;;;;;4157:10:37;:34;;;;18506:19:43;;4157:178:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4100:235:37;;3522:875;-1:-1:-1;;;;;;;3522:875:37:o;3619:772::-;3522:875;;;:::o;9088:197:2:-;9170:4;929:10:7;9225:32:2;929:10:7;9242:7:2;9251:5;9225:8;:32::i;:::-;-1:-1:-1;9274:4:2;;9088:197;-1:-1:-1;;;9088:197:2:o;5572:596:37:-;5643:14;5673:12;:10;:12::i;:::-;5669:493;;;5710:23;5726:6;5710:15;:23::i;:::-;5701:32;3522:875;-1:-1:-1;;3522:875:37:o;5669:493::-;5856:17;5875:15;5894:14;:12;:14::i;:::-;5947:204;;-1:-1:-1;;;5947:204:37;;19665:6:43;19653:19;;5947:204:37;;;19635:38:43;19689:18;;;19682:34;;;19764:12;19752:25;;19732:18;;;19725:53;6081:1:37;19794:18:43;;;19787:51;6100:15:37;19854:19:43;;;19847:35;6133:4:37;19898:19:43;;;19891:51;5855:53:37;;-1:-1:-1;5855:53:37;-1:-1:-1;5947:10:37;-1:-1:-1;;;;;5947:38:37;;;;19607:19:43;;5947:204:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;5922:229:37;;5572:596;-1:-1:-1;;;;5572:596:37:o;1337:269:38:-;1517:82;1531:21;1554:11;1567:8;1577:14;1593:5;1517:13;:82::i;:::-;1337:269;;;;:::o;1406:1864:36:-;2369:13:0;;;;;;;:48;;2405:12;;;;2404:13;2369:48;;;3147:4;1476:19:6;:23;2385:16:0;2361:107;;;;-1:-1:-1;;;2361:107:0;;20551:2:43;2361:107:0;;;20533:21:43;20590:2;20570:18;;;20563:30;20629:34;20609:18;;;20602:62;-1:-1:-1;;;20680:18:43;;;20673:44;20734:19;;2361:107:0;;;;;;;;;2479:19;2502:13;;;;;;2501:14;2525:98;;;;2559:13;:20;;-1:-1:-1;;2593:19:0;;;;;2525:98;1539:35:36::1;::::0;-1:-1:-1;;;1539:35:36;;10978:6:43;10966:19;;1539:35:36::1;::::0;::::1;10948:38:43::0;1502:34:36::1;::::0;1539:10:::1;-1:-1:-1::0;;;;;1539:23:36::1;::::0;::::1;::::0;10921:18:43;;1539:35:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1539:35:36::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1592:24:::0;;1502:72;;-1:-1:-1;1592:28:36::1;;1584:57;;;::::0;-1:-1:-1;;;1584:57:36;;23394:2:43;1584:57:36::1;::::0;::::1;23376:21:43::0;23433:2;23413:18;;;23406:30;-1:-1:-1;;;23452:18:43;;;23445:46;23508:18;;1584:57:36::1;23192:340:43::0;1584:57:36::1;1897:24:::0;;1872:77:::1;::::0;::::1;;;::::0;::::1;1933:15;1872:24;:77::i;:::-;1851:140;;;::::0;-1:-1:-1;;;1851:140:36;;23739:2:43;1851:140:36::1;::::0;::::1;23721:21:43::0;23778:2;23758:18;;;23751:30;-1:-1:-1;;;23797:18:43;;;23790:46;23853:18;;1851:140:36::1;23537:340:43::0;1851:140:36::1;2055:78;;::::0;::::1;;::::0;::::1;1734:1:30;2055:28:36;:78::i;:::-;2044:8;:89:::0;2145:22:::1;2178:20;:18;:20::i;:::-;2144:54;;;2209:17;2244:15;:13;:15::i;:::-;-1:-1:-1::0;2208:51:36;;-1:-1:-1;2270:21:36::1;::::0;-1:-1:-1;;;;;;2294:49:36;::::1;::::0;:133:::1;;2401:15;-1:-1:-1::0;;;;;2378:47:36::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;2378:49:36::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2294:133;;;;;;;;;;;;;;;;-1:-1:-1::0;;;2294:133:36::1;;::::0;::::1;2270:157;;2438:23;2464:26;2481:8;2464:26;;:16;:26::i;:::-;2438:52;;2501:278;2585:7;2601:9;2555:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2678:7;2692:9;2655:47;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;2655:47:36;;::::1;::::0;;;2767:1:::1;2753:16:::0;;::::1;::::0;::::1;::::0;;;2655:47;2501:13:::1;:278::i;:::-;2960:62;-1:-1:-1::0;;;;;2960:22:36;::::1;2991:10;-1:-1:-1::0;;2960:22:36::1;:62::i;:::-;3080:15;-1:-1:-1::0;;;;;3049:47:36::1;3057:10;-1:-1:-1::0;;;;;3049:47:36::1;;;:112;;;;-1:-1:-1::0;;;;;;3112:49:36;::::1;::::0;::::1;3049:112;3032:232;;;3186:67;-1:-1:-1::0;;;;;3186:27:36;::::1;3222:10;-1:-1:-1::0;;3186:27:36::1;:67::i;:::-;1492:1778;;;;;2649:14:0::0;2645:66;;;2695:5;2679:21;;-1:-1:-1;;2679:21:0;;;2645:66;2080:637;1406:1864:36;;:::o;9767:639:2:-;9903:4;-1:-1:-1;;;;;9927:23:2;;9919:72;;;;-1:-1:-1;;;9919:72:2;;;;;;;:::i;:::-;-1:-1:-1;;;;;10009:20:2;;10001:71;;;;-1:-1:-1;;;10001:71:2;;26640:2:43;10001:71:2;;;26622:21:43;26679:2;26659:18;;;26652:30;26718:34;26698:18;;;26691:62;-1:-1:-1;;;26769:18:43;;;26762:36;26815:19;;10001:71:2;26438:402:43;10001:71:2;10083:15;929:10:7;10083:30:2;;10124:61;10142:7;10151:6;10159:9;10170:6;10124:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;10196:40;10212:6;10220:7;10229:6;10196:15;:40::i;:::-;10247:49;10253:7;10262:6;10270:9;10281:6;10247:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;10307:70;10327:7;10336:6;10344:9;10355:6;10307:70;;;;;;;;;;;;;;;;;;;;;;;;10371:5;10307:19;:70::i;:::-;-1:-1:-1;10395:4:2;;9767:639;-1:-1:-1;;;;9767:639:2:o;1975:273:38:-;2160:81;2174:21;2197:11;2210:8;2220:14;2236:4;2160:13;:81::i;301:191:37:-;348:7;368:22;392:10;406:14;415:4;406:8;:14::i;:::-;367:53;;;;437:5;:48;;469:15;437:48;;;453:4;437:48;430:55;;;;301:191;:::o;7318:386:38:-;7456:241;7476:6;7496:191;;;;;;;;7545:5;7496:191;;;;;;7583:5;7496:191;;;;;;7616:8;-1:-1:-1;;;;;7496:191:38;;;;;7658:14;7496:191;;;;;7456:6;:241::i;4445:128:37:-;4504:7;4530:12;:10;:12::i;:::-;:36;;-1:-1:-1;;4530:36:37;;;4545:1;4523:43;4445:128;-1:-1:-1;;4445:128:37:o;4142:177:36:-;4196:17;4215:15;4274:38;4303:8;;458:2:32;452:8;;;;420:1;414:7;;;;383:2;168:300;4274:38:36;-1:-1:-1;4242:70:36;;;;-1:-1:-1;4142:177:36;-1:-1:-1;4142:177:36:o;6219:579:37:-;6288:14;6318:12;:10;:12::i;:::-;6314:478;;;6355:23;6371:6;6355:15;:23::i;6314:478::-;6501:17;6520:15;6539:14;:12;:14::i;:::-;6599:182;;-1:-1:-1;;;6599:182:37;;18564:6:43;18552:19;;6599:182:37;;;18534:38:43;18588:18;;;18581:34;;;18663:12;18651:25;;18631:18;;;18624:53;6733:1:37;18693:18:43;;;18686:51;6752:15:37;18753:19:43;;;18746:35;6500:53:37;;-1:-1:-1;6500:53:37;-1:-1:-1;6599:10:37;-1:-1:-1;;;;;6599:38:37;;;;18506:19:43;;6599:182:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6567:214:37;;6219:579;-1:-1:-1;;;;;;6219:579:37:o;6212:309:36:-;6271:12;6285:10;6311:13;6307:151;;;6357:20;:18;:20::i;:::-;-1:-1:-1;6340:37:36;-1:-1:-1;6307:151:36;;;6432:15;:13;:15::i;:::-;-1:-1:-1;6408:39:36;;-1:-1:-1;;6307:151:36;-1:-1:-1;6483:5:36;-1:-1:-1;;;;;6475:39:36;;;;-1:-1:-1;6212:309:36:o;7579:366:2:-;7786:35;929:10:7;7814:6:2;7786:13;:35::i;:::-;7778:92;;;;-1:-1:-1;;;7778:92:2;;;;;;;:::i;:::-;7880:58;7886:6;7894:9;7905:6;7913:4;7919:12;7933:4;7880:5;:58::i;:::-;7579:366;;;;;:::o;6843:360:37:-;6919:7;6956:20;6967:8;6956:10;:20::i;:::-;6946:6;:30;;6938:54;;;;-1:-1:-1;;;6938:54:37;;27460:2:43;6938:54:37;;;27442:21:43;27499:2;27479:18;;;27472:30;-1:-1:-1;;;27518:18:43;;;27511:41;27569:18;;6938:54:37;27258:335:43;6938:54:37;7002:14;7019:22;7034:6;7019:14;:22::i;:::-;7002:39;;7052:61;7066:6;7074:19;7086:6;7074:11;:19::i;:::-;7095:8;7105:1;7108:4;7052:13;:61::i;:::-;7128:45;;;27772:25:43;;;27828:2;27813:18;;27806:34;;;-1:-1:-1;;;;;7128:45:37;;;7136:10;;7128:45;;27745:18:43;7128:45:37;;;;;;;;7190:6;6843:360;-1:-1:-1;;;6843:360:37:o;7802:390:38:-;7945:240;7965:6;7985:190;;;;;;;;8034:4;7985:190;;;;;;8071:5;7985:190;;;;;;8104:8;-1:-1:-1;;;;;7985:190:38;;;;;8146:14;7985:190;;;;;7945:6;:240::i;7245:290:37:-;7318:7;7337:14;7354:19;7366:6;7354:11;:19::i;:::-;7337:36;;7384:61;7398:6;7406:19;7418:6;7406:11;:19::i;7384:61::-;7460:45;;;27772:25:43;;;27828:2;27813:18;;27806:34;;;-1:-1:-1;;;;;7460:45:37;;;7468:10;;7460:45;;27745:18:43;7460:45:37;27598:248:43;6385:412:2;929:10:7;-1:-1:-1;;;;;6472:24:2;;;;6464:73;;;;-1:-1:-1;;;6464:73:2;;28053:2:43;6464:73:2;;;28035:21:43;28092:2;28072:18;;;28065:30;28131:34;28111:18;;;28104:62;-1:-1:-1;;;28182:18:43;;;28175:34;28226:19;;6464:73:2;27851:400:43;6464:73:2;-1:-1:-1;;;;;6552:27:2;;;;;;:17;:27;;;;;;;;6548:185;;;929:10:7;6602:38:2;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;6602:48:2;;;;;;;;;6595:55;;-1:-1:-1;;6595:55:2;;;6548:185;;;929:10:7;6681:24:2;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;6681:34:2;;;;;;;;;:41;;-1:-1:-1;;6681:41:2;6718:4;6681:41;;;6548:185;6748:42;;929:10:7;;-1:-1:-1;;;;;6748:42:2;;;;;;;;6385:412;:::o;3638:102::-;3694:13;3726:7;3719:14;;;;;:::i;4824:193::-;4956:54;929:10:7;4976:9:2;4987:6;4995:4;4956:54;;;;;;;;;;;;5005:4;4956:5;:54::i;3748:114:36:-;3800:4;3840:15;3823:13;:11;:13::i;:::-;:32;;;;3816:39;;3748:114;:::o;5248:439:2:-;5334:4;-1:-1:-1;;;;;5358:23:2;;5350:72;;;;-1:-1:-1;;;5350:72:2;;;;;;;:::i;:::-;5433:12;929:10:7;5433:27:2;;5471:56;5489:4;5495;5501:9;5512:6;5471:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;5538:44;5544:4;5550;5556:9;5567:6;5538:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;5593:65;5613:4;5619;5625:9;5636:6;5593:65;;;;;;;;;;;;;;;;;;;;;;;;5652:5;5593:19;:65::i;5353:166:37:-;5420:7;5448:12;:10;:12::i;:::-;5447:13;5439:33;;;;-1:-1:-1;;;5439:33:37;;28458:2:43;5439:33:37;;;28440:21:43;28497:1;28477:18;;;28470:29;-1:-1:-1;;;28515:18:43;;;28508:37;28562:18;;5439:33:37;28256:330:43;5439:33:37;5489:23;5505:6;5489:15;:23::i;7581:433::-;7703:7;7722:14;7739:23;7755:6;7739:15;:23::i;:::-;7722:40;-1:-1:-1;7777:10:37;-1:-1:-1;;;;;7777:19:37;;;7773:92;;7812:42;7828:5;7835:10;7847:6;7812:15;:42::i;:::-;7874:40;7890:6;7898:8;7908:5;7874:15;:40::i;:::-;7930:53;;;27772:25:43;;;27828:2;27813:18;;27806:34;;;-1:-1:-1;;;;;7930:53:37;;;;;;;;7939:10;;7930:53;;27745:18:43;7930:53:37;;;;;;;8001:6;7581:433;-1:-1:-1;;;;7581:433:37:o;8058:713::-;8178:7;8338:21;8369:7;:5;:7::i;:::-;8362:35;;-1:-1:-1;;;8362:35:37;;-1:-1:-1;;;;;4227:32:43;;;8362:35:37;;;4209:51:43;8362:25:37;;;;;;;4182:18:43;;8362:35:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8338:59;-1:-1:-1;8412:10:37;-1:-1:-1;;;;;8412:19:37;;;8408:92;;8447:42;8463:5;8470:10;8482:6;8447:15;:42::i;:::-;8509:40;8525:6;8533:8;8543:5;8509:15;:40::i;:::-;8560:20;8590:7;:5;:7::i;:::-;8583:35;;-1:-1:-1;;;8583:35:37;;-1:-1:-1;;;;;4227:32:43;;;8583:35:37;;;4209:51:43;8583:25:37;;;;;;;4182:18:43;;8583:35:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8560:58;-1:-1:-1;8628:14:37;8645:28;8660:13;8560:58;8645:28;:::i;:::-;8628:45;;8719:5;-1:-1:-1;;;;;8688:53:37;8709:8;-1:-1:-1;;;;;8688:53:37;8697:10;-1:-1:-1;;;;;8688:53:37;;8726:6;8734;8688:53;;;;;;27772:25:43;;;27828:2;27813:18;;27806:34;27760:2;27745:18;;27598:248;8688:53:37;;;;;;;;8758:6;8058:713;-1:-1:-1;;;;;;8058:713:37:o;4618:124::-;4674:7;4700:12;:10;:12::i;:::-;:35;;-1:-1:-1;;;;;4700:35:37;;;4715:1;4700:35;-1:-1:-1;;;;;4693:42:37;;4618:124;-1:-1:-1;;4618:124:37:o;2238:1231::-;2309:14;2339:12;:10;:12::i;:::-;2335:1128;;;2367:26;2396:31;:29;:31::i;:::-;2367:60;;2961:18;2944:13;4403:12:2;;;4277:145;2944:13:37;2935:22;;:6;:22;:::i;2335:1128::-;3115:17;3134:15;3153:14;:12;:14::i;:::-;3219:200;;-1:-1:-1;;;3219:200:37;;19665:6:43;19653:19;;3219:200:37;;;19635:38:43;19689:18;;;19682:34;;;19764:12;19752:25;;19732:18;;;19725:53;3182:19:37;19794:18:43;;;19787:51;;;3368:15:37;19854:19:43;;;19847:35;3401:4:37;19898:19:43;;;19891:51;3114:53:37;;-1:-1:-1;3114:53:37;;-1:-1:-1;;;;;;3219:10:37;:34;;;;19607:19:43;;3219:200:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;3181:238:37;;2238:1231;-1:-1:-1;;;;;2238:1231:37:o;4630:406:36:-;4686:5;4704:19;4725:20;4749:136;585:1:30;4833:13:36;:11;:13::i;:::-;4749:136;;4860:15;4749:23;:136::i;:::-;4703:182;;;;4900:15;4896:29;;;4924:1;4917:8;;;;4630:406;:::o;4896:29::-;-1:-1:-1;5017:11:36;4630:406;-1:-1:-1;4630:406:36:o;4791:132:37:-;-1:-1:-1;;;;;4665:22:2;;4857:7:37;4665:22:2;;;:9;:22;;;;;;4883:33:37;;3522:875;:::i;3922:158:36:-;3977:17;4035:38;4064:8;;458:2:32;452:8;;;;420:1;414:7;;;;383:2;168:300;4035:38:36;-1:-1:-1;4006:67:36;;3922:158;-1:-1:-1;;3922:158:36:o;6978:240:38:-;7060:17;7091:4;7080:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;7060:36;;7193:18;7198:6;7206:4;7193;:18::i;4970:113:37:-;-1:-1:-1;;;;;4665:22:2;;5034:7:37;4665:22:2;;;:9;:22;;;;;;5060:16:37;4522:172:2;6007:311;6107:4;6154:11;-1:-1:-1;;;;;6142:23:2;:8;-1:-1:-1;;;;;6142:23:2;;:120;;;-1:-1:-1;;;;;;6182:27:2;;;;;;:17;:27;;;;;;;;:79;;;;-1:-1:-1;;;;;;6214:37:2;;;;;;;:24;:37;;;;;;;;:47;;;;;;;;;;;;6213:48;6182:79;6142:169;;;-1:-1:-1;;;;;;6278:23:2;;;;;;;:10;:23;;;;;;;;:33;;;;;;;;;;;;6123:188;6007:311;-1:-1:-1;;;6007:311:2:o;3503:152:36:-;3556:15;3610:38;3639:8;;458:2:32;452:8;;;;420:1;414:7;;;;383:2;168:300;3610:38:36;-1:-1:-1;3583:65:36;3503:152;-1:-1:-1;;3503:152:36:o;5247:502::-;5307:22;5331:26;5370:18;5390:23;5417:10;-1:-1:-1;;;;;5417:22:36;;5440:15;:13;:15::i;:::-;5417:39;;-1:-1:-1;;;;;;5417:39:36;;;;;;;10978:6:43;10966:19;;;5417:39:36;;;10948:38:43;10921:18;;5417:39:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5369:87;;-1:-1:-1;5369:87:36;-1:-1:-1;5490:21:36;5471:5;:15;;;:40;;;;;;;;:::i;:::-;;5467:276;;;-1:-1:-1;5604:18:36;;5625:14;;;;;5604:18;;5625:14;;-1:-1:-1;5247:502:36;-1:-1:-1;5247:502:36:o;5467:276::-;5686:23;;5712:19;;;;;5686:23;;5712:19;;-1:-1:-1;5247:502:36;-1:-1:-1;;5247:502:36:o;5135:169:37:-;5205:7;5233:12;:10;:12::i;:::-;5232:13;5224:33;;;;-1:-1:-1;;;5224:33:37;;28458:2:43;5224:33:37;;;28440:21:43;28497:1;28477:18;;;28470:29;-1:-1:-1;;;28515:18:43;;;28508:37;28562:18;;5224:33:37;28256:330:43;5224:33:37;5274:23;5290:6;5274:15;:23::i;5090:1742:38:-;5279:6;1744:1:20;2325:7;;:19;;2317:63;;;;-1:-1:-1;;;2317:63:20;;;;;;;:::i;:::-;1744:1;2455:7;:18;5297:15:38::1;5315:12;3415:8:36::0;;;3337:93;5315:12:38::1;5297:30:::0;-1:-1:-1;5415:10:38::1;-1:-1:-1::0;;;;;5437:10:38::1;5415:33;;:156:::0;::::1;;;;5564:7;5557:3;:14;5415:156;:245;;;;;5659:1;5649:6;5642:18;5415:245;5394:299;;;::::0;-1:-1:-1;;;5394:299:38;;31232:2:43;5394:299:38::1;::::0;::::1;31214:21:43::0;31271:1;31251:18;;;31244:29;-1:-1:-1;;;31289:18:43;;;31282:37;31336:18;;5394:299:38::1;31030:330:43::0;5394:299:38::1;5871:43;::::0;-1:-1:-1;;;5871:43:38;;5908:4:::1;5871:43;::::0;::::1;4209:51:43::0;5844:24:38::1;::::0;5871:10:::1;-1:-1:-1::0;;;;;5871:28:38::1;::::0;::::1;::::0;4182:18:43;;5871:43:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5957:45;::::0;-1:-1:-1;;;5957:45:38;;5996:4:::1;5957:45;::::0;::::1;4209:51:43::0;5844:70:38;;-1:-1:-1;5924:30:38::1;::::0;-1:-1:-1;;;;;5957:10:38::1;:30;::::0;::::1;::::0;4182:18:43;;5957:45:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5957:45:38::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;6033:10;::::0;::::1;::::0;5924:78;;-1:-1:-1;;;;;;;6033:18:38::1;::::0;:52;::::1;;;;6067:6;:13;6084:1;6067:18;6033:52;:232;;;;;6258:7;6101:153;6147:6;6154:1;6147:9;;;;;;;;:::i;:::-;;;;;;;:20;;;6185:6;6192:1;6185:9;;;;;;;;:::i;:::-;;;;;;;:18;;;6221:6;6228:1;6221:9;;;;;;;;:::i;:::-;;;;;;;:19;;;6101:28;:153::i;:::-;:164;6033:232;6012:263;;;::::0;::::1;;6409:21;6440:25:::0;6492:5:::1;-1:-1:-1::0;;;;;6479:18:38::1;:9;-1:-1:-1::0;;;;;6479:18:38::1;;6475:75;;;6510:5;;6499:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6499:16:38;;-1:-1:-1;6475:75:38::1;::::0;-1:-1:-1;;;6475:75:38::1;;6545:5;;6530:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6530:20:38;;-1:-1:-1;;;;6475:75:38::1;6688:51;6694:5;6701:6;6709:8;6719:12;6733:5;6688;:51::i;:::-;-1:-1:-1::0;;1701:1:20;2628:7;:22;-1:-1:-1;;;;6809:16:38;5090:1742;-1:-1:-1;;;;;;;;;5090:1742:38:o;5895:311:36:-;5950:17;5969:26;5997:19;6029:18;6082:10;-1:-1:-1;;;;;6082:22:36;;6105:15;:13;:15::i;:::-;6082:39;;-1:-1:-1;;;;;;6082:39:36;;;;;;;10978:6:43;10966:19;;;6082:39:36;;;10948:38:43;10921:18;;6082:39:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6146:18:36;;6167:14;;;;6183:15;;;;;6146:18;;6167:14;;-1:-1:-1;6183:15:36;-1:-1:-1;5895:311:36;-1:-1:-1;;5895:311:36:o;6861:403:2:-;-1:-1:-1;;;;;6945:24:2;;929:10:7;6945:24:2;;6937:70;;;;-1:-1:-1;;;6937:70:2;;34486:2:43;6937:70:2;;;34468:21:43;34525:2;34505:18;;;34498:30;34564:34;34544:18;;;34537:62;-1:-1:-1;;;34615:18:43;;;34608:31;34656:19;;6937:70:2;34284:397:43;6937:70:2;-1:-1:-1;;;;;7022:27:2;;;;;;:17;:27;;;;;;;;7018:185;;;929:10:7;7065:38:2;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;7065:48:2;;;;;;;;;:55;;-1:-1:-1;;7065:55:2;7116:4;7065:55;;;7018:185;;;929:10:7;7158:24:2;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;7158:34:2;;;;;;;;;7151:41;;-1:-1:-1;;7151:41:2;;;7018:185;7218:39;;929:10:7;;-1:-1:-1;;;;;7218:39:2;;;;;;;;6861:403;:::o;8066:325::-;8247:36;929:10:7;8275:7:2;8247:13;:36::i;:::-;8239:93;;;;-1:-1:-1;;;8239:93:2;;;;;;;:::i;:::-;8342:42;8348:7;8357:6;8365:4;8371:12;8342:5;:42::i;5817:127::-;5900:37;929:10:7;5920:6:2;5928:4;5900:37;;;;;;;;;;;;:5;:37::i;:::-;5817:127;;:::o;1186:320:6:-;-1:-1:-1;;;;;1476:19:6;;:23;;;1186:320::o;498:697:37:-;561:7;649:17;669:15;:13;:15::i;:::-;924:55;;-1:-1:-1;;;924:55:37;;34888:6:43;34876:19;;924:55:37;;;34858:38:43;973:4:37;34912:18:43;;;34905:60;649:35:37;;-1:-1:-1;888:18:37;;-1:-1:-1;;;;;924:10:37;:28;;;;34831:18:43;;924:55:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1017:70:37;;-1:-1:-1;;;1017:70:37;;35507:6:43;35495:19;;1017:70:37;;;35477:38:43;35531:18;;;35524:34;;;1082:4:37;35574:18:43;;;35567:50;887:92:37;;-1:-1:-1;989:25:37;;-1:-1:-1;;;;;1017:10:37;:39;;;;35450:18:43;;1017:70:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;989:98;;1126:1;1105:18;:22;1097:46;;;;-1:-1:-1;;;1097:46:37;;35830:2:43;1097:46:37;;;35812:21:43;35869:2;35849:18;;;35842:30;-1:-1:-1;;;35888:18:43;;;35881:41;35939:18;;1097:46:37;35628:335:43;15543:373:2;-1:-1:-1;;;;;15674:20:2;;15666:70;;;;-1:-1:-1;;;15666:70:2;;36170:2:43;15666:70:2;;;36152:21:43;36209:2;36189:18;;;36182:30;36248:34;36228:18;;;36221:62;-1:-1:-1;;;36299:18:43;;;36292:35;36344:19;;15666:70:2;35968:401:43;15666:70:2;-1:-1:-1;;;;;15754:21:2;;15746:69;;;;-1:-1:-1;;;15746:69:2;;36576:2:43;15746:69:2;;;36558:21:43;36615:2;36595:18;;;36588:30;36654:34;36634:18;;;36627:62;-1:-1:-1;;;36705:18:43;;;36698:33;36748:19;;15746:69:2;36374:399:43;15746:69:2;-1:-1:-1;;;;;15826:19:2;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:36;;;15877:32;;160:25:43;;;15877:32:2;;133:18:43;15877:32:2;;;;;;;15543:373;;;:::o;2254:2606:38:-;1744:1:20;2325:7;;:19;;2317:63;;;;-1:-1:-1;;;2317:63:20;;;;;;;:::i;:::-;1744:1;2455:7;:18;2476:12:38::1;:10;:12::i;:::-;2475:13;2467:39;;;::::0;-1:-1:-1;;;2467:39:38;;36980:2:43;2467:39:38::1;::::0;::::1;36962:21:43::0;37019:2;36999:18;;;36992:30;-1:-1:-1;;;37038:18:43;;;37031:43;37091:18;;2467:39:38::1;36778:337:43::0;2467:39:38::1;2517:12;2531:10:::0;2545:23:::1;2554:13;2545:8;:23::i;:::-;2516:52;;;;2578:21;2602:5;:62;;2634:30;::::0;-1:-1:-1;;;2634:30:38;;2658:4:::1;2634:30;::::0;::::1;4209:51:43::0;-1:-1:-1;;;;;2634:15:38;::::1;::::0;::::1;::::0;4182:18:43;;2634:30:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2602:62;;;2610:21;2602:62;2578:86;;3344:5;3340:1270;;;3365:90;-1:-1:-1::0;;;;;3381:4:38::1;3365:40;3406:10;3426:4;3433:21:::0;3365:40:::1;:90::i;:::-;3469:36;::::0;-1:-1:-1;;;3469:36:38;;::::1;::::0;::::1;160:25:43::0;;;3469:4:38::1;-1:-1:-1::0;;;;;3469:13:38::1;::::0;::::1;::::0;133:18:43;;3469:36:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3520:39;3562:212;3611:15;:13;:15::i;:::-;3644:16;:14;:16::i;:::-;3678:21;3717:11;3746:14;3562:31;:212::i;:::-;3520:254;;3961:10;-1:-1:-1::0;;;;;3961:37:38::1;;4006:21;4037:4;4044:6;3961:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3351:711;3340:1270;;;4173:72;-1:-1:-1::0;;;;;4173:22:38;::::1;4196:10;4216:4;4223:21:::0;4173:22:::1;:72::i;:::-;4313:25;4341:201;4387:15;:13;:15::i;:::-;4420:16;:14;:16::i;:::-;4454:11;4483:14;4515:13;4341:28;:201::i;:::-;4556:43;::::0;-1:-1:-1;;;4556:43:38;;4313:229;;-1:-1:-1;;;;;;4556:10:38::1;:20;::::0;::::1;::::0;:43:::1;::::0;4585:4:::1;::::0;4313:229;;4556:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4068:542;3340:1270;4737:43;4743:8;4753:11;-1:-1:-1::0;;;;;4737:43:38::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;::::0;4774:5:::1;4737;:43::i;:::-;4791:62;4813:5;4820:10;4832:5;4839:13;4791:21;:62::i;:::-;-1:-1:-1::0;;1701:1:20;2628:7;:22;-1:-1:-1;;;;;;;2254:2606:38:o;1413:521:31:-;1552:4;1568:12;1583:36;1609:9;1583:25;:36::i;:::-;1568:51;;1629:19;1658:40;1683:14;1658:24;:40::i;:::-;1651:47;;:4;:47;:::i;:::-;1629:69;;1765:11;1754:8;:22;1750:40;;;1785:5;1778:12;;;;;;1750:40;1836:12;1852:51;1883:9;1894:8;1852:30;:51::i;:::-;1828:75;1413:521;-1:-1:-1;;;;;;;;1413:521:31:o;508:548:32:-;643:7;1988:6:30;670:38:32;;;662:47;;;;;;739:16;727:28;;;719:37;;;;;;1940:1:30;774:48:32;;;766:57;;;;;;-1:-1:-1;879:42:32;919:2;879:42;;;;942:39;980:1;942:39;;;;878:104;1009:25;;;878:157;508:548;;;;;:::o;328:703:29:-;384:13;601:10;597:51;;-1:-1:-1;;627:10:29;;;;;;;;;;;;-1:-1:-1;;;627:10:29;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:29;;-1:-1:-1;773:2:29;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;-1:-1:-1;;;;;817:17:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:29;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:29;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;902:56:29;;;;;;;;-1:-1:-1;972:11:29;981:2;972:11;;:::i;:::-;;;844:150;;;1017:6;328:703;-1:-1:-1;;;;328:703:29:o;2531:234:2:-;2952:13:0;;;;;;;2944:69;;;;-1:-1:-1;;;2944:69:0;;;;;;;:::i;:::-;2700:58:2::1;2724:5;2731:7;2740:17;2700:23;:58::i;1413:603:23:-:0;1768:10;;;1767:62;;-1:-1:-1;1784:39:23;;-1:-1:-1;;;1784:39:23;;1808:4;1784:39;;;41615:34:43;-1:-1:-1;;;;;41685:15:43;;;41665:18;;;41658:43;1784:15:23;;;;;41550:18:43;;1784:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1767:62;1746:163;;;;-1:-1:-1;;;1746:163:23;;41914:2:43;1746:163:23;;;41896:21:43;41953:2;41933:18;;;41926:30;41992:34;41972:18;;;41965:62;-1:-1:-1;;;42043:18:43;;;42036:52;42105:19;;1746:163:23;41712:418:43;1746:163:23;1946:62;;-1:-1:-1;;;;;12867:32:43;;1946:62:23;;;12849:51:43;12916:18;;;12909:34;;;1919:90:23;;1939:5;;-1:-1:-1;;;1969:22:23;12822:18:43;;1946:62:23;;;;-1:-1:-1;;1946:62:23;;;;;;;;;;;;;;-1:-1:-1;;;;;1946:62:23;-1:-1:-1;;;;;;1946:62:23;;;;;;;;;;1919:19;:90::i;16389:483:2:-;16620:78;;-1:-1:-1;;;16620:78:2;;-1:-1:-1;;;;;12867:32:43;;16620:78:2;;;12849:51:43;1706:31:2;12916:18:43;;;12909:34;16598:19:2;;1457:42;;16620:41;;12822:18:43;;16620:78:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16598:100;-1:-1:-1;;;;;;16712:25:2;;;16708:158;;16753:102;;-1:-1:-1;;;16753:102:2;;-1:-1:-1;;;;;16753:50:2;;;;;:102;;16804:8;;16814:4;;16820:2;;16824:6;;16832:8;;16842:12;;16753:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16708:158;16588:284;16389:483;;;;;;:::o;18525:442::-;-1:-1:-1;;;;;8746:19:2;;;18655:24;8746:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;18721:37:2;;18717:244;;18802:6;18782:16;:26;;18774:69;;;;-1:-1:-1;;;18774:69:2;;43888:2:43;18774:69:2;;;43870:21:43;43927:2;43907:18;;;43900:30;43966:32;43946:18;;;43939:60;44016:18;;18774:69:2;43686:354:43;18774:69:2;18885:51;18894:5;18901:7;18929:6;18910:16;:25;18885:8;:51::i;14794:611::-;-1:-1:-1;;;;;15072:15:2;;15050:19;15072:15;;;:9;:15;;;;;;15105:21;;;;15097:73;;;;-1:-1:-1;;;15097:73:2;;44247:2:43;15097:73:2;;;44229:21:43;44286:2;44266:18;;;44259:30;44325:34;44305:18;;;44298:62;-1:-1:-1;;;44376:18:43;;;44369:37;44423:19;;15097:73:2;44045:403:43;15097:73:2;-1:-1:-1;;;;;15204:15:2;;;;;;;:9;:15;;;;;;15222:20;;;15204:38;;15262:13;;;;;;;;:23;;15236:6;;15204:15;15262:23;;15236:6;;15262:23;:::i;:::-;;;;;;;;15322:2;-1:-1:-1;;;;;15301:56:2;15316:4;-1:-1:-1;;;;;15301:56:2;15306:8;-1:-1:-1;;;;;15301:56:2;;15326:6;15334:8;15344:12;15301:56;;;;;;;;:::i;:::-;;;;;;;;15387:2;-1:-1:-1;;;;;15372:26:2;15381:4;-1:-1:-1;;;;;15372:26:2;;15391:6;15372:26;;;;160:25:43;;148:2;133:18;;14:177;15372:26:2;;;;;;;;14981:424;14794:611;;;;;;:::o;17561:687::-;17828:79;;-1:-1:-1;;;17828:79:2;;-1:-1:-1;;;;;12867:32:43;;17828:79:2;;;12849:51:43;1803:34:2;12916:18:43;;;12909:34;17806:19:2;;1457:42;;17828:41;;12822:18:43;;17828:79:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17806:101;-1:-1:-1;;;;;;17921:25:2;;;17917:325;;17962:107;;-1:-1:-1;;;17962:107:2;;-1:-1:-1;;;;;17962:55:2;;;;;:107;;18018:8;;18028:4;;18034:2;;18038:6;;18046:8;;18056:12;;17962:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17917:325;;;18090:19;18086:156;;;-1:-1:-1;;;;;18134:13:2;;1476:19:6;:23;18125:106:2;;;;-1:-1:-1;;;18125:106:2;;45110:2:43;18125:106:2;;;45092:21:43;45149:2;45129:18;;;45122:30;45188:34;45168:18;;;45161:62;45259:34;45239:18;;;45232:62;-1:-1:-1;;;45310:19:43;;;45303:44;45364:19;;18125:106:2;44908:481:43;18125:106:2;17796:452;17561:687;;;;;;;:::o;13022:650::-;-1:-1:-1;;;;;13244:18:2;;13236:65;;;;-1:-1:-1;;;13236:65:2;;45596:2:43;13236:65:2;;;45578:21:43;45635:2;45615:18;;;45608:30;45674:34;45654:18;;;45647:62;-1:-1:-1;;;45725:18:43;;;45718:32;45767:19;;13236:65:2;45394:398:43;13236:65:2;-1:-1:-1;;;;;13319:16:2;;13311:61;;;;-1:-1:-1;;;13311:61:2;;45999:2:43;13311:61:2;;;45981:21:43;;;46018:18;;;46011:30;46077:34;46057:18;;;46050:62;46129:18;;13311:61:2;45797:356:43;13311:61:2;929:10:7;13425:69:2;929:10:7;13453:4:2;13459:2;13463:6;13471:8;13481:12;13425:17;:69::i;:::-;13505:57;13511:8;13521:4;13527:2;13531:6;13539:8;13549:12;13505:5;:57::i;:::-;13573:92;13593:8;13603:4;13609:2;13613:6;13621:8;13631:12;13645:19;13573;:92::i;12972:145:38:-;13027:6;-1:-1:-1;;;;;13053:30:38;;;13045:39;;;;;;-1:-1:-1;13108:1:38;12972:145::o;8777:437:37:-;8947:177;;;;;;;;8996:4;8947:177;;8899:21;8947:177;;;;;;;-1:-1:-1;;;;;8947:177:37;;;;;;;;;;;;8923:211;;8899:21;;8923:211;;8947:177;8923:211;;:::i;:::-;;;;-1:-1:-1;;8923:211:37;;;;;;;9173:34;;;;;-1:-1:-1;9173:34:37;;8923:211;-1:-1:-1;9173:34:37;;9179:5;;9186:6;;8923:211;;9173:5;:34::i;2170:822:31:-;2308:7;2317:4;2358:1;2341:14;:18;2333:52;;;;-1:-1:-1;;;2333:52:31;;46360:2:43;2333:52:31;;;46342:21:43;46399:2;46379:18;;;46372:30;-1:-1:-1;;;46418:18:43;;;46411:51;46479:18;;2333:52:31;46158:345:43;2333:52:31;585:1:30;2403:14:31;:51;;2395:86;;;;-1:-1:-1;;;2395:86:31;;46710:2:43;2395:86:31;;;46692:21:43;46749:2;46729:18;;;46722:30;-1:-1:-1;;;46768:18:43;;;46761:52;46830:18;;2395:86:31;46508:346:43;2395:86:31;2491:12;2506:36;2532:9;2506:25;:36::i;:::-;2491:51;-1:-1:-1;2570:1:31;2553:393;2578:14;2573:1;:19;2553:393;;2613:22;2645:27;2670:1;2645:24;:27::i;:::-;2638:34;;:4;:34;:::i;:::-;2613:59;;2767:8;2749:14;:26;2745:49;;;-1:-1:-1;2785:1:31;-1:-1:-1;2788:5:31;;-1:-1:-1;2777:17:31;;-1:-1:-1;2777:17:31;2745:49;2909:8;2892:14;:25;2888:47;;;-1:-1:-1;2927:1:31;-1:-1:-1;2930:4:31;;-1:-1:-1;2919:16:31;;-1:-1:-1;2919:16:31;2888:47;-1:-1:-1;2594:3:31;;;;:::i;:::-;;;;2553:393;;;-1:-1:-1;2956:29:31;;-1:-1:-1;;;2956:29:31;;47061:2:43;2956:29:31;;;47043:21:43;47100:2;47080:18;;;47073:30;-1:-1:-1;;;47119:18:43;;;47112:49;47178:18;;2956:29:31;46859:343:43;2170:822:31;;;;;;;:::o;11820:726:2:-;-1:-1:-1;;;;;12025:21:2;;12017:66;;;;-1:-1:-1;;;12017:66:2;;47409:2:43;12017:66:2;;;47391:21:43;;;47428:18;;;47421:30;47487:34;47467:18;;;47460:62;47539:18;;12017:66:2;47207:356:43;12017:66:2;12094:16;929:10:7;12094:31:2;;12256:6;12240:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;12272:18:2;;;;;;:9;:18;;;;;:28;;12294:6;;12272:18;:28;;12294:6;;12272:28;:::i;:::-;;;;-1:-1:-1;12311:103:2;;-1:-1:-1;12331:8:2;12349:1;12353:7;12362:6;12370:8;12380:12;12394:19;12311;:103::i;:::-;12447:7;-1:-1:-1;;;;;12430:57:2;12437:8;-1:-1:-1;;;;;12430:57:2;;12456:6;12464:8;12474:12;12430:57;;;;;;;;:::i;:::-;;;;;;;;12502:37;;160:25:43;;;-1:-1:-1;;;;;12502:37:2;;;12519:1;;12502:37;;148:2:43;133:18;12502:37:2;;;;;;;;12007:539;11820:726;;;;;:::o;8335:2521:38:-;1744:1:20;2325:7;;:19;;2317:63;;;;-1:-1:-1;;;2317:63:20;;;;;;;:::i;:::-;1744:1;2455:7;:18;8597:26:38::1;8626:13;4403:12:2::0;;;4277:145;8626:13:38::1;8597:42;;8649:22;8685:8;8674:34;;;;;;;;;;;;:::i;:::-;8726:13;::::0;::::1;::::0;8649:59;;-1:-1:-1;;;;;;8726:27:38::1;8718:64;;;::::0;-1:-1:-1;;;8718:64:38;;48678:2:43;8718:64:38::1;::::0;::::1;48660:21:43::0;48717:2;48697:18;;;48690:30;48756:26;48736:18;;;48729:54;48800:18;;8718:64:38::1;48476:348:43::0;8718:64:38::1;8943:49;8955:4;8961:6;8969:8;8979:12;8943:11;:49::i;:::-;9007:12;:10;:12::i;:::-;9003:1847;;;9275:39;::::0;-1:-1:-1;;;9275:39:38;;9308:4:::1;9275:39;::::0;::::1;4209:51:43::0;9275:10:38::1;-1:-1:-1::0;;;;;9275:24:38::1;::::0;::::1;::::0;4182:18:43;;9275:39:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9328:17;9348:15;:13;:15::i;:::-;9415:55;::::0;-1:-1:-1;;;9415:55:38;;34888:6:43;34876:19;;9415:55:38::1;::::0;::::1;34858:38:43::0;9464:4:38::1;34912:18:43::0;;;34905:60;9328:35:38;;-1:-1:-1;9379:18:38::1;::::0;-1:-1:-1;;;;;9415:10:38::1;:28;::::0;::::1;::::0;34831:18:43;;9415:55:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9378:92;;;;9496:11;9492:1;:15;9484:49;;;::::0;-1:-1:-1;;;9484:49:38;;49031:2:43;9484:49:38::1;::::0;::::1;49013:21:43::0;49070:2;49050:18;;;49043:30;-1:-1:-1;;;49089:18:43;;;49082:51;49150:18;;9484:49:38::1;48829:345:43::0;9484:49:38::1;9627:30;9694:18:::0;9661:29:::1;9684:6:::0;9669:11;9661:29:::1;:::i;:::-;9660:52;;;;:::i;:::-;9627:85;;9790:189;9830:10;9858:4;:13;;;9889:35;9901:22;9889:11;:35::i;:::-;9942:23:::0;;9790:22:::1;:189::i;:::-;;9021:969;;;9003:1847;;;10000:4;:18;;;9996:854;;;10364:10;-1:-1:-1::0;;;;;10364:27:38::1;;10417:4;10470;:13;;;10528:12;3415:8:36::0;;;3337:93;10528:12:38::1;10578:6;10629:8;10364:287;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;9996:854;10682:157;10710:4;:13;;;10741:6;10765:4;:23;;;10806:4;:19;;;10682:10;:157::i;:::-;;9996:854;-1:-1:-1::0;;1701:1:20;2628:7;:22;-1:-1:-1;;;;8335:2521:38:o;912:241:23:-;1077:68;;-1:-1:-1;;;;;50003:15:43;;;1077:68:23;;;49985:34:43;50055:15;;50035:18;;;50028:43;50087:18;;;50080:34;;;1050:96:23;;1070:5;;-1:-1:-1;;;1100:27:23;49920:18:43;;1077:68:23;49745:375:43;1718:867:32;1987:32;;;2017:1;1987:32;;;;;;;;;1927:39;;1987:32;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1978:41;;2052:35;2029:6;2036:1;2029:9;;;;;;;;:::i;:::-;;;;;;;:20;;:58;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;2120:10;2097:6;2104:1;2097:9;;;;;;;;:::i;:::-;;;;;;;:20;;:33;;;;;;;;;;;2172:21;2140:6;2147:1;2140:9;;;;;;;;:::i;:::-;;;;;;;:29;;:53;;;;;2241:4;2203:6;2210:1;2203:9;;;;;;;;:::i;:::-;;;;;;;:35;;:42;;;;;;;;;;;2286:4;2255:6;2262:1;2255:9;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:28;;;;:35;2319:16;;;2333:1;2319:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2319:16:32;2300:6;2307:1;2300:9;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:35;-1:-1:-1;;;2564:3:32;2537:30;;;;-1:-1:-1;;;;;;;2517:3:32;2493:27;;;;-1:-1:-1;;;2473:3:32;2449:27;;;;2429:3;2403:20;2397:27;2389:36;;:43;;2388:89;:133;:180;2367:211;;2345:6;2352:1;2345:9;;;;;;;;:::i;:::-;;;;;;;:16;;;2362:1;2345:19;;;;;;;;:::i;:::-;;;;;;:233;;;;;1718:867;;;;;;;:::o;1062:650::-;1303:18;;;1319:1;1303:18;;;;;;;;;1257:25;;1303:18;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;1303:18:32;;;;;;;;;;;;;;;1294:27;;1354:10;1331:6;1338:1;1331:9;;;;;;;;:::i;:::-;;;;;;;:20;;:33;;;;;;;;;;;1404:13;1374:6;1381:1;1374:9;;;;;;;;:::i;:::-;;;;;;;;;;;;:43;;;:27;;:43;1446:16;;;1460:1;1446:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1446:16:32;1427:6;1434:1;1427:9;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:35;1472:9;;1600:3;1576:27;;;-1:-1:-1;;;1576:27:32;1644:3;1620:27;;;-1:-1:-1;;;;;;;1620:27:32;1515:133;1691:3;1664:30;;;-1:-1:-1;;;1664:30:32;1515:180;;1472:6;;1530:20;;1472:9;;;;:::i;:::-;;;;;;;:16;;;1489:1;1472:19;;;;;;;;:::i;12385:581:38:-;12538:25;12575:20;12598:5;:62;;12630:30;;-1:-1:-1;;;12630:30:38;;12654:4;12630:30;;;4209:51:43;-1:-1:-1;;;;;12630:15:38;;;;;4182:18:43;;12630:30:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12598:62;;;12606:21;12598:62;12575:85;-1:-1:-1;12690:28:38;12705:13;12575:85;12690:28;:::i;:::-;12670:48;;12733:5;12729:231;;;12754:4;-1:-1:-1;;;;;12754:12:38;;12774:17;12754:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12808:63:38;;-1:-1:-1;;;;;;;12823:4:38;12808:34;;-1:-1:-1;12843:8:38;;-1:-1:-1;12853:17:38;12808:34;:63::i;:::-;12729:231;;;12902:47;-1:-1:-1;;;;;12902:18:38;;12921:8;12931:17;12902:18;:47::i;:::-;12565:401;12385:581;;;;;;:::o;226:193:31:-;294:7;839::30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;321::31;:30;;313:39;;;;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;382:29:31;;:9;:29;:::i;:::-;369:43;;:9;:43;:::i;824:470::-;887:7;910:5;919:1;910:10;906:40;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;906:40:31:-;960:5;969:1;960:10;956:44;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;979:21:31;;:1;:21;:::i;956:44::-;1014:5;1023:1;1014:10;1010:37;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;1010:37:31:-;1061:5;1070:1;1061:10;1057:41;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;1057:41:31:-;1112:5;1121:1;1112:10;1108:41;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;:::-;1131:18:31;;:1;:18;:::i;1108:41::-;1163:5;1172:1;1163:10;1159:42;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;:::-;1182:19:31;;:2;:19;:::i;1159:42::-;1215:5;1224:1;1215:10;1211:42;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;:::-;1234:19:31;;:2;:19;:::i;1211:42::-;1264:23;;-1:-1:-1;;;1264:23:31;;50327:2:43;1264:23:31;;;50309:21:43;50366:2;50346:18;;;50339:30;-1:-1:-1;;;50385:18:43;;;50378:43;50438:18;;1264:23:31;50125:337:43;3208:2699:31;3323:7;3332:4;3352:21;3376:22;3388:9;3376:11;:22::i;:::-;3352:46;-1:-1:-1;3466:24:31;718:5:30;3466:8:31;:24;:::i;:::-;:29;3462:52;;3505:1;3508:5;3497:17;;;;;;;3462:52;3587:8;3570:13;:25;3566:48;;3605:1;3608:5;3597:17;;;;;;;3566:48;3717:18;718:5:30;3739:24:31;3750:13;3739:8;:24;:::i;:::-;3738:42;;;;:::i;:::-;3717:63;;1299:2:30;3863:10:31;:38;3859:1887;;3925:10;-1:-1:-1;3937:4:31;;-1:-1:-1;3917:25:31;;-1:-1:-1;3917:25:31;3859:1887;1351:3:30;3963:10:31;:39;3959:1787;;4275:20;718:5:30;839:7;718:5;845:1;839:7;:::i;:::-;4395:30:31;;:13;:30;:::i;:::-;4394:68;;;;:::i;:::-;4314:57;1299:2:30;4314:10:31;:57;:::i;:::-;:148;;;;:::i;:::-;4275:187;-1:-1:-1;4711:37:31;1091:1:30;4275:187:31;4711:37;:::i;:::-;4683:65;;1572:2:30;4683:65:31;:::i;:::-;4767:37;1091:1:30;4767:12:31;:37;:::i;:::-;4809:1;4766:44;4489:335;;;;;;;;;3959:1787;1405:4:30;4845:10:31;:40;4841:905;;4901:20;718:5:30;839:7;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;5022:31:31;;:13;:31;:::i;:::-;5021:69;;;;:::i;:::-;4940:58;1351:3:30;4940:10:31;:58;:::i;:::-;:150;;;;:::i;:::-;4901:189;-1:-1:-1;5159:38:31;1140:2:30;4901:189:31;5159:38;:::i;:::-;5130:67;;1625:3:30;5130:67:31;:::i;:::-;5216:38;1140:2:30;5216:12:31;:38;:::i;4841:905::-;1462:4:30;5295:10:31;:42;5291:455;;5353:20;718:5:30;839:7;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;5475:33:31;;:13;:33;:::i;:::-;5474:71;;;;:::i;:::-;5392:59;1405:4:30;5392:10:31;:59;:::i;:::-;:153;;;;:::i;:::-;5353:192;-1:-1:-1;5616:40:31;1192:2:30;5353:192:31;5616:40;:::i;:::-;5585:71;;1681:3:30;5585:71:31;:::i;:::-;5675:40;1192:2:30;5675:12:31;:40;:::i;5291:455::-;5889:3;5894:5;5881:19;;;;;;3208:2699;;;;;;:::o;2771:659:2:-;2952:13:0;;;;;;;2944:69;;;;-1:-1:-1;;;2944:69:0;;;;;;;:::i;:::-;2950:13:2;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2973:17:2;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;3001:42:2;;::::1;::::0;:22:::1;::::0;:42:::1;::::0;::::1;::::0;::::1;:::i;:::-;;3058:9;3053:126;3077:17;:24;3073:1;:28;3053:126;;;3164:4;3122:17;:39;3140:17;3158:1;3140:20;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;3122:39:2::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;3122:39:2;:46;;-1:-1:-1;;3122:46:2::1;::::0;::::1;;::::0;;;::::1;::::0;;3103:3;::::1;::::0;::::1;:::i;:::-;;;;3053:126;;;-1:-1:-1::0;3220:97:2::1;::::0;-1:-1:-1;;;3220:97:2;;3270:4:::1;3220:97;::::0;::::1;50707:34:43::0;;;3277:24:2::1;50757:18:43::0;;;50750:34;50800:18;;;50793:43;1457:42:2::1;::::0;3220:41:::1;::::0;50642:18:43;;3220:97:2::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3327:96:2::1;::::0;-1:-1:-1;;;3327:96:2;;3377:4:::1;3327:96;::::0;::::1;50707:34:43::0;;;3384:23:2::1;50757:18:43::0;;;50750:34;50800:18;;;50793:43;1457:42:2::1;::::0;-1:-1:-1;3327:41:2::1;::::0;-1:-1:-1;50642:18:43;;3327:96:2::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3207:706:23::0;3626:23;3652:69;3680:4;3652:69;;;;;;;;;;;;;;;;;3660:5;-1:-1:-1;;;;;3652:27:23;;;:69;;;;;:::i;:::-;3735:17;;3626:95;;-1:-1:-1;3735:21:23;3731:176;;3830:10;3819:30;;;;;;;;;;;;:::i;:::-;3811:85;;;;-1:-1:-1;;;3811:85:23;;51299:2:43;3811:85:23;;;51281:21:43;51338:2;51318:18;;;51311:30;51377:34;51357:18;;;51350:62;-1:-1:-1;;;51428:18:43;;;51421:40;51478:19;;3811:85:23;51097:406:43;13977:811:2;-1:-1:-1;;;;;14141:18:2;;14133:65;;;;-1:-1:-1;;;14133:65:2;;51710:2:43;14133:65:2;;;51692:21:43;51749:2;51729:18;;;51722:30;51788:34;51768:18;;;51761:62;-1:-1:-1;;;51839:18:43;;;51832:32;51881:19;;14133:65:2;51508:398:43;14133:65:2;929:10:7;14251:73:2;929:10:7;14279:4:2;14209:16;14297:6;14305:4;14311:12;14251:17;:73::i;:::-;-1:-1:-1;;;;;14458:15:2;;14436:19;14458:15;;;:9;:15;;;;;;14491:21;;;;14483:69;;;;-1:-1:-1;;;14483:69:2;;52113:2:43;14483:69:2;;;52095:21:43;52152:2;52132:18;;;52125:30;52191:34;52171:18;;;52164:62;-1:-1:-1;;;52242:18:43;;;52235:33;52285:19;;14483:69:2;51911:399:43;14483:69:2;-1:-1:-1;;;;;14586:15:2;;;;;;:9;:15;;;;;14604:20;;;14586:38;;14644:12;:22;;14618:6;;14586:15;14644:22;;14618:6;;14644:22;:::i;:::-;;;;;;;;14699:4;-1:-1:-1;;;;;14682:50:2;14689:8;-1:-1:-1;;;;;14682:50:2;;14705:6;14713:4;14719:12;14682:50;;;;;;;;:::i;:::-;;;;;;;;14747:34;;160:25:43;;;14770:1:2;;-1:-1:-1;;;;;14747:34:2;;;;;148:2:43;133:18;14747:34:2;14:177:43;10924:536:38;11098:25;11136:12;11150:10;11164:22;11173:12;11164:8;:22::i;:::-;11135:51;;;;11196:21;11220:5;:62;;11252:30;;-1:-1:-1;;;11252:30:38;;11276:4;11252:30;;;4209:51:43;-1:-1:-1;;;;;11252:15:38;;;;;4182:18:43;;11252:30:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11220:62;;;11228:21;11220:62;11293:69;;-1:-1:-1;;;11293:69:38;;52537:6:43;52525:19;;11293:69:38;;;52507:38:43;-1:-1:-1;;;;;52581:37:43;;52561:18;;;52554:65;52662:14;;52655:22;52635:18;;;52628:50;11196:86:38;;-1:-1:-1;11293:10:38;-1:-1:-1;;;;;11293:19:38;;;;52480:18:43;;11293:69:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11393:60;11415:5;11422:8;11432:5;11439:13;11393:21;:60::i;11525:854::-;11681:25;11719:12;11733:10;11747:22;11756:12;11747:8;:22::i;:::-;11718:51;;;;11779:21;11803:5;:62;;11835:30;;-1:-1:-1;;;11835:30:38;;11859:4;11835:30;;;4209:51:43;-1:-1:-1;;;;;11835:15:38;;;;;4182:18:43;;11835:30:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11803:62;;;11811:21;11803:62;11779:86;;11931:39;11973:191;12017:15;:13;:15::i;:::-;12046:16;:14;:16::i;:::-;12076:24;12088:11;12076;:24::i;:::-;12114:14;12142:12;11973:30;:191::i;:::-;12174:60;;-1:-1:-1;;;12174:60:38;;11931:233;;-1:-1:-1;;;;;;12174:10:38;:37;;;;:60;;12220:4;;11931:233;;12174:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12312;12334:5;12341:8;12351:5;12358:13;12312:21;:60::i;:::-;12292:80;11525:854;-1:-1:-1;;;;;;;;;11525:854:38:o;701:205:23:-;840:58;;-1:-1:-1;;;;;12867:32:43;;840:58:23;;;12849:51:43;12916:18;;;12909:34;;;813:86:23;;833:5;;-1:-1:-1;;;863:23:23;12822:18:43;;840:58:23;12662:287:43;479:160:31;537:7;718:5:30;564:4:31;:21;;556:30;;;;;;611:20;718:5:30;611:4:31;:20;:::i;3861:223:25:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;2591:788:32:-;2847:32;;;2877:1;2847:32;;;;;;;;;2787:39;;2847:32;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2838:41;;2912:22;2889:6;2896:1;2889:9;;;;;;;;:::i;:::-;;;;;;;:20;;:45;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;2967:10;2944:6;2951:1;2944:9;;;;;;;;:::i;:::-;;;;;;;:20;;:33;;;;;;;;;;;3025:4;2987:6;2994:1;2987:9;;;;;;;;:::i;:::-;;;;;;;:35;;:42;;;;;;;;;;;3070:12;3039:6;3046:1;3039:9;;;;;;;;:::i;:::-;;;;;;;;;;;:43;;;:28;;;;:43;3111:16;;;3125:1;3111:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3111:16:32;3092:6;3099:1;3092:9;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:35;-1:-1:-1;;;3358:3:32;3331:30;;;;-1:-1:-1;;;;;;;3311:3:32;3287:27;;;;-1:-1:-1;;;3267:3:32;3243:27;;;;3223:3;3195:22;3189:29;;4948:499:25;5113:12;5170:5;5145:21;:30;;5137:81;;;;-1:-1:-1;;;5137:81:25;;52891:2:43;5137:81:25;;;52873:21:43;52930:2;52910:18;;;52903:30;52969:34;52949:18;;;52942:62;-1:-1:-1;;;53020:18:43;;;53013:36;53066:19;;5137:81:25;52689:402:43;5137:81:25;-1:-1:-1;;;;;1476:19:6;;;5228:60:25;;;;-1:-1:-1;;;5228:60:25;;53298:2:43;5228:60:25;;;53280:21:43;53337:2;53317:18;;;53310:30;53376:31;53356:18;;;53349:59;53425:18;;5228:60:25;53096:353:43;5228:60:25;5300:12;5314:23;5341:6;-1:-1:-1;;;;;5341:11:25;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;4948:499;-1:-1:-1;;;;;;;4948:499:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:658:43;367:2;419:21;;;489:13;;392:18;;;511:22;;;338:4;;367:2;590:15;;;;564:2;549:18;;;338:4;633:195;647:6;644:1;641:13;633:195;;;712:13;;-1:-1:-1;;;;;708:39:43;696:52;;803:15;;;;768:12;;;;744:1;662:9;633:195;;;-1:-1:-1;845:3:43;;196:658;-1:-1:-1;;;;;;196:658:43:o;859:258::-;931:1;941:113;955:6;952:1;949:13;941:113;;;1031:11;;;1025:18;1012:11;;;1005:39;977:2;970:10;941:113;;;1072:6;1069:1;1066:13;1063:48;;;-1:-1:-1;;1107:1:43;1089:16;;1082:27;859:258::o;1122:::-;1164:3;1202:5;1196:12;1229:6;1224:3;1217:19;1245:63;1301:6;1294:4;1289:3;1285:14;1278:4;1271:5;1267:16;1245:63;:::i;:::-;1362:2;1341:15;-1:-1:-1;;1337:29:43;1328:39;;;;1369:4;1324:50;;1122:258;-1:-1:-1;;1122:258:43:o;1385:220::-;1534:2;1523:9;1516:21;1497:4;1554:45;1595:2;1584:9;1580:18;1572:6;1554:45;:::i;1610:180::-;1669:6;1722:2;1710:9;1701:7;1697:23;1693:32;1690:52;;;1738:1;1735;1728:12;1690:52;-1:-1:-1;1761:23:43;;1610:180;-1:-1:-1;1610:180:43:o;1795:131::-;-1:-1:-1;;;;;1870:31:43;;1860:42;;1850:70;;1916:1;1913;1906:12;1850:70;1795:131;:::o;1931:315::-;1999:6;2007;2060:2;2048:9;2039:7;2035:23;2031:32;2028:52;;;2076:1;2073;2066:12;2028:52;2115:9;2102:23;2134:31;2159:5;2134:31;:::i;:::-;2184:5;2236:2;2221:18;;;;2208:32;;-1:-1:-1;;;1931:315:43:o;2539:135::-;-1:-1:-1;;;;;2617:5:43;2613:36;2606:5;2603:47;2593:75;;2664:1;2661;2654:12;2679:121;2764:10;2757:5;2753:22;2746:5;2743:33;2733:61;;2790:1;2787;2780:12;2805:594;2889:6;2897;2905;2913;2966:3;2954:9;2945:7;2941:23;2937:33;2934:53;;;2983:1;2980;2973:12;2934:53;3019:9;3006:23;2996:33;;3079:2;3068:9;3064:18;3051:32;3092:30;3116:5;3092:30;:::i;:::-;3141:5;-1:-1:-1;3198:2:43;3183:18;;3170:32;3211:33;3170:32;3211:33;:::i;:::-;3263:7;-1:-1:-1;3322:2:43;3307:18;;3294:32;3335;3294;3335;:::i;:::-;2805:594;;;;-1:-1:-1;2805:594:43;;-1:-1:-1;;2805:594:43:o;3404:117::-;3489:6;3482:5;3478:18;3471:5;3468:29;3458:57;;3511:1;3508;3501:12;3526:123;3611:12;3604:5;3600:24;3593:5;3590:35;3580:63;;3639:1;3636;3629:12;3654:384;3720:6;3728;3781:2;3769:9;3760:7;3756:23;3752:32;3749:52;;;3797:1;3794;3787:12;3749:52;3836:9;3823:23;3855:30;3879:5;3855:30;:::i;:::-;3904:5;-1:-1:-1;3961:2:43;3946:18;;3933:32;3974;3933;3974;:::i;:::-;4025:7;4015:17;;;3654:384;;;;;:::o;4271:456::-;4348:6;4356;4364;4417:2;4405:9;4396:7;4392:23;4388:32;4385:52;;;4433:1;4430;4423:12;4385:52;4472:9;4459:23;4491:31;4516:5;4491:31;:::i;:::-;4541:5;-1:-1:-1;4598:2:43;4583:18;;4570:32;4611:33;4570:32;4611:33;:::i;:::-;4271:456;;4663:7;;-1:-1:-1;;;4717:2:43;4702:18;;;;4689:32;;4271:456::o;5129:454::-;5205:6;5213;5221;5274:2;5262:9;5253:7;5249:23;5245:32;5242:52;;;5290:1;5287;5280:12;5242:52;5326:9;5313:23;5303:33;;5386:2;5375:9;5371:18;5358:32;5399:31;5424:5;5399:31;:::i;:::-;5449:5;-1:-1:-1;5506:2:43;5491:18;;5478:32;5519;5478;5519;:::i;:::-;5570:7;5560:17;;;5129:454;;;;;:::o;5588:247::-;5647:6;5700:2;5688:9;5679:7;5675:23;5671:32;5668:52;;;5716:1;5713;5706:12;5668:52;5755:9;5742:23;5774:31;5799:5;5774:31;:::i;6121:118::-;6207:5;6200:13;6193:21;6186:5;6183:32;6173:60;;6229:1;6226;6219:12;6244:241;6300:6;6353:2;6341:9;6332:7;6328:23;6324:32;6321:52;;;6369:1;6366;6359:12;6321:52;6408:9;6395:23;6427:28;6449:5;6427:28;:::i;6794:127::-;6855:10;6850:3;6846:20;6843:1;6836:31;6886:4;6883:1;6876:15;6910:4;6907:1;6900:15;6926:255;6998:2;6992:9;7040:6;7028:19;;-1:-1:-1;;;;;7062:34:43;;7098:22;;;7059:62;7056:88;;;7124:18;;:::i;:::-;7160:2;7153:22;6926:255;:::o;7186:253::-;7258:2;7252:9;7300:4;7288:17;;-1:-1:-1;;;;;7320:34:43;;7356:22;;;7317:62;7314:88;;;7382:18;;:::i;7444:275::-;7515:2;7509:9;7580:2;7561:13;;-1:-1:-1;;7557:27:43;7545:40;;-1:-1:-1;;;;;7600:34:43;;7636:22;;;7597:62;7594:88;;;7662:18;;:::i;:::-;7698:2;7691:22;7444:275;;-1:-1:-1;7444:275:43:o;7724:186::-;7772:4;-1:-1:-1;;;;;7797:6:43;7794:30;7791:56;;;7827:18;;:::i;:::-;-1:-1:-1;7893:2:43;7872:15;-1:-1:-1;;7868:29:43;7899:4;7864:40;;7724:186::o;7915:462::-;7957:5;8010:3;8003:4;7995:6;7991:17;7987:27;7977:55;;8028:1;8025;8018:12;7977:55;8064:6;8051:20;8095:48;8111:31;8139:2;8111:31;:::i;:::-;8095:48;:::i;:::-;8168:2;8159:7;8152:19;8214:3;8207:4;8202:2;8194:6;8190:15;8186:26;8183:35;8180:55;;;8231:1;8228;8221:12;8180:55;8296:2;8289:4;8281:6;8277:17;8270:4;8261:7;8257:18;8244:55;8344:1;8319:16;;;8337:4;8315:27;8308:38;;;;8323:7;7915:462;-1:-1:-1;;;7915:462:43:o;8382:885::-;8495:6;8503;8511;8519;8527;8580:3;8568:9;8559:7;8555:23;8551:33;8548:53;;;8597:1;8594;8587:12;8548:53;8636:9;8623:23;8655:31;8680:5;8655:31;:::i;:::-;8705:5;-1:-1:-1;8762:2:43;8747:18;;8734:32;8775:33;8734:32;8775:33;:::i;:::-;8827:7;-1:-1:-1;8881:2:43;8866:18;;8853:32;;-1:-1:-1;8936:2:43;8921:18;;8908:32;-1:-1:-1;;;;;8989:14:43;;;8986:34;;;9016:1;9013;9006:12;8986:34;9039:49;9080:7;9071:6;9060:9;9056:22;9039:49;:::i;:::-;9029:59;;9141:3;9130:9;9126:19;9113:33;9097:49;;9171:2;9161:8;9158:16;9155:36;;;9187:1;9184;9177:12;9155:36;;9210:51;9253:7;9242:8;9231:9;9227:24;9210:51;:::i;:::-;9200:61;;;8382:885;;;;;;;;:::o;9272:315::-;9340:6;9348;9401:2;9389:9;9380:7;9376:23;9372:32;9369:52;;;9417:1;9414;9407:12;9369:52;9453:9;9440:23;9430:33;;9513:2;9502:9;9498:18;9485:32;9526:31;9551:5;9526:31;:::i;9592:523::-;9678:6;9686;9694;9747:2;9735:9;9726:7;9722:23;9718:32;9715:52;;;9763:1;9760;9753:12;9715:52;9802:9;9789:23;9821:31;9846:5;9821:31;:::i;:::-;9871:5;-1:-1:-1;9923:2:43;9908:18;;9895:32;;-1:-1:-1;9978:2:43;9963:18;;9950:32;-1:-1:-1;;;;;9994:30:43;;9991:50;;;10037:1;10034;10027:12;9991:50;10060:49;10101:7;10092:6;10081:9;10077:22;10060:49;:::i;:::-;10050:59;;;9592:523;;;;;:::o;10343:456::-;10420:6;10428;10436;10489:2;10477:9;10468:7;10464:23;10460:32;10457:52;;;10505:1;10502;10495:12;10457:52;10541:9;10528:23;10518:33;;10601:2;10590:9;10586:18;10573:32;10614:31;10639:5;10614:31;:::i;:::-;10664:5;-1:-1:-1;10721:2:43;10706:18;;10693:32;10734:33;10693:32;10734:33;:::i;10997:1068::-;11093:6;11101;11145:9;11136:7;11132:23;11175:3;11171:2;11167:12;11164:32;;;11192:1;11189;11182:12;11164:32;11215:23;;;-1:-1:-1;11272:4:43;-1:-1:-1;;11254:16:43;;11250:27;11247:47;;;11290:1;11287;11280:12;11247:47;;11323:2;11317:9;11365:4;11357:6;11353:17;11436:6;11424:10;11421:22;-1:-1:-1;;;;;11388:10:43;11385:34;11382:62;11379:88;;;11447:18;;:::i;:::-;11483:2;11476:22;11548:2;11533:18;;11520:32;11561:28;11520:32;11561:28;:::i;:::-;11598:21;;11671:2;11656:18;;11643:32;11684:30;11643:32;11684:30;:::i;:::-;11742:2;11730:15;;11723:32;11807:2;11792:18;;11779:32;11820:33;11779:32;11820:33;:::i;:::-;11881:2;11869:15;;11862:32;11946:4;11931:20;;11918:34;11961:32;11918:34;11961:32;:::i;:::-;12021:2;12009:15;;12002:32;10997:1068;;12013:6;;-1:-1:-1;10997:1068:43;;-1:-1:-1;;10997:1068:43:o;12070:388::-;12138:6;12146;12199:2;12187:9;12178:7;12174:23;12170:32;12167:52;;;12215:1;12212;12205:12;12167:52;12254:9;12241:23;12273:31;12298:5;12273:31;:::i;:::-;12323:5;-1:-1:-1;12380:2:43;12365:18;;12352:32;12393:33;12352:32;12393:33;:::i;12954:1005::-;13060:6;13068;13076;13084;13092;13100;13153:3;13141:9;13132:7;13128:23;13124:33;13121:53;;;13170:1;13167;13160:12;13121:53;13209:9;13196:23;13228:31;13253:5;13228:31;:::i;:::-;13278:5;-1:-1:-1;13335:2:43;13320:18;;13307:32;13348:33;13307:32;13348:33;:::i;:::-;13400:7;-1:-1:-1;13454:2:43;13439:18;;13426:32;;-1:-1:-1;13505:2:43;13490:18;;13477:32;;-1:-1:-1;13560:3:43;13545:19;;13532:33;-1:-1:-1;;;;;13614:14:43;;;13611:34;;;13641:1;13638;13631:12;13611:34;13679:6;13668:9;13664:22;13654:32;;13724:7;13717:4;13713:2;13709:13;13705:27;13695:55;;13746:1;13743;13736:12;13695:55;13786:2;13773:16;13812:2;13804:6;13801:14;13798:34;;;13828:1;13825;13818:12;13798:34;13873:7;13868:2;13859:6;13855:2;13851:15;13847:24;13844:37;13841:57;;;13894:1;13891;13884:12;13841:57;13925:2;13921;13917:11;13907:21;;13947:6;13937:16;;;;;12954:1005;;;;;;;;:::o;14171:127::-;14232:10;14227:3;14223:20;14220:1;14213:31;14263:4;14260:1;14253:15;14287:4;14284:1;14277:15;14303:426;-1:-1:-1;;;;;14548:32:43;;14530:51;;14612:2;14597:18;;14590:34;;;14518:2;14503:18;;14654:1;14643:13;;14633:47;;14660:18;;:::i;:::-;14716:6;14711:2;14700:9;14696:18;14689:34;14303:426;;;;;;:::o;14734:743::-;14838:6;14846;14854;14862;14915:3;14903:9;14894:7;14890:23;14886:33;14883:53;;;14932:1;14929;14922:12;14883:53;14971:9;14958:23;14990:31;15015:5;14990:31;:::i;:::-;15040:5;-1:-1:-1;15092:2:43;15077:18;;15064:32;;-1:-1:-1;15147:2:43;15132:18;;15119:32;-1:-1:-1;;;;;15200:14:43;;;15197:34;;;15227:1;15224;15217:12;15197:34;15250:49;15291:7;15282:6;15271:9;15267:22;15250:49;:::i;:::-;15240:59;;15352:2;15341:9;15337:18;15324:32;15308:48;;15381:2;15371:8;15368:16;15365:36;;;15397:1;15394;15387:12;15365:36;;15420:51;15463:7;15452:8;15441:9;15437:24;15420:51;:::i;:::-;15410:61;;;14734:743;;;;;;;:::o;15482:388::-;15559:6;15567;15620:2;15608:9;15599:7;15595:23;15591:32;15588:52;;;15636:1;15633;15626:12;15588:52;15672:9;15659:23;15649:33;;15733:2;15722:9;15718:18;15705:32;-1:-1:-1;;;;;15752:6:43;15749:30;15746:50;;;15792:1;15789;15782:12;15746:50;15815:49;15856:7;15847:6;15836:9;15832:22;15815:49;:::i;:::-;15805:59;;;15482:388;;;;;:::o;16380:183::-;16449:6;16502:2;16490:9;16481:7;16477:23;16473:32;16470:52;;;16518:1;16515;16508:12;16470:52;-1:-1:-1;16541:16:43;;16380:183;-1:-1:-1;16380:183:43:o;16568:127::-;16629:10;16624:3;16620:20;16617:1;16610:31;16660:4;16657:1;16650:15;16684:4;16681:1;16674:15;16700:553;16739:7;-1:-1:-1;;;;;16809:9:43;;;16837;;;16862:11;;;16881:10;;;16875:17;;16858:35;16855:61;;;16896:18;;:::i;:::-;-1:-1:-1;;;16972:1:43;16965:9;;16990:11;;;17010;;;17003:19;;16986:37;16983:63;;;17026:18;;:::i;:::-;17072:1;17069;17065:9;17055:19;;17119:1;17115:2;17110:11;17107:1;17103:19;17098:2;17094;17090:11;17086:37;17083:63;;;17126:18;;:::i;:::-;17191:1;17187:2;17182:11;17179:1;17175:19;17170:2;17166;17162:11;17158:37;17155:63;;;17198:18;;:::i;:::-;-1:-1:-1;;;17238:9:43;;;;;16700:553;-1:-1:-1;;;16700:553:43:o;17258:127::-;17319:10;17314:3;17310:20;17307:1;17300:31;17350:4;17347:1;17340:15;17374:4;17371:1;17364:15;17390:193;17429:1;17455;17445:35;;17460:18;;:::i;:::-;-1:-1:-1;;;17496:18:43;;-1:-1:-1;;17516:13:43;;17492:38;17489:64;;;17533:18;;:::i;:::-;-1:-1:-1;17567:10:43;;17390:193::o;17588:380::-;17667:1;17663:12;;;;17710;;;17731:61;;17785:4;17777:6;17773:17;17763:27;;17731:61;17838:2;17830:6;17827:14;17807:18;17804:38;17801:161;;;17884:10;17879:3;17875:20;17872:1;17865:31;17919:4;17916:1;17909:15;17947:4;17944:1;17937:15;17973:168;18013:7;18079:1;18075;18071:6;18067:14;18064:1;18061:21;18056:1;18049:9;18042:17;18038:45;18035:71;;;18086:18;;:::i;:::-;-1:-1:-1;18126:9:43;;17973:168::o;18146:120::-;18186:1;18212;18202:35;;18217:18;;:::i;:::-;-1:-1:-1;18251:9:43;;18146:120::o;18792:160::-;18869:13;;18922:4;18911:16;;18901:27;;18891:55;;18942:1;18939;18932:12;18957:388;19052:6;19060;19068;19076;19129:3;19117:9;19108:7;19104:23;19100:33;19097:53;;;19146:1;19143;19136:12;19097:53;19175:9;19169:16;19159:26;;19225:2;19214:9;19210:18;19204:25;19194:35;;19248:47;19291:2;19280:9;19276:18;19248:47;:::i;:::-;19335:2;19320:18;;;;19314:25;18957:388;;;;-1:-1:-1;;;18957:388:43:o;19953:391::-;20038:6;20046;20054;20107:2;20095:9;20086:7;20082:23;20078:32;20075:52;;;20123:1;20120;20113:12;20075:52;20155:9;20149:16;20174:30;20198:5;20174:30;:::i;:::-;20223:5;-1:-1:-1;20247:47:43;20290:2;20275:18;;20247:47;:::i;:::-;20237:57;;20334:2;20323:9;20319:18;20313:25;20303:35;;19953:391;;;;;:::o;20764:181::-;20822:4;-1:-1:-1;;;;;20847:6:43;20844:30;20841:56;;;20877:18;;:::i;:::-;-1:-1:-1;20922:1:43;20918:14;20934:4;20914:25;;20764:181::o;20950:677::-;21013:5;21066:3;21059:4;21051:6;21047:17;21043:27;21033:55;;21084:1;21081;21074:12;21033:55;21113:6;21107:13;21139:4;21163:58;21179:41;21217:2;21179:41;:::i;21163:58::-;21255:15;;;21341:1;21337:10;;;;21325:23;;21321:32;;;21286:12;;;;21365:15;;;21362:35;;;21393:1;21390;21383:12;21362:35;21429:2;21421:6;21417:15;21441:157;21457:6;21452:3;21449:15;21441:157;;;21523:32;21551:3;21523:32;:::i;:::-;21511:45;;21576:12;;;;21474;;21441:157;;;-1:-1:-1;21616:5:43;20950:677;-1:-1:-1;;;;;;20950:677:43:o;21632:1555::-;21737:6;21790:2;21778:9;21769:7;21765:23;21761:32;21758:52;;;21806:1;21803;21796:12;21758:52;21839:9;21833:16;-1:-1:-1;;;;;21909:2:43;21901:6;21898:14;21895:34;;;21925:1;21922;21915:12;21895:34;21948:22;;;;22004:6;21986:16;;;21982:29;21979:49;;;22024:1;22021;22014:12;21979:49;22050:22;;:::i;:::-;22095:31;22123:2;22095:31;:::i;:::-;22088:5;22081:46;22159:40;22195:2;22191;22187:11;22159:40;:::i;:::-;22154:2;22147:5;22143:14;22136:64;22232:40;22268:2;22264;22260:11;22232:40;:::i;:::-;22227:2;22220:5;22216:14;22209:64;22305:40;22341:2;22337;22333:11;22305:40;:::i;:::-;22300:2;22293:5;22289:14;22282:64;22379:41;22415:3;22411:2;22407:12;22379:41;:::i;:::-;22373:3;22366:5;22362:15;22355:66;22454:41;22490:3;22486:2;22482:12;22454:41;:::i;:::-;22448:3;22441:5;22437:15;22430:66;22529:41;22565:3;22561:2;22557:12;22529:41;:::i;:::-;22523:3;22516:5;22512:15;22505:66;22604:41;22640:3;22636:2;22632:12;22604:41;:::i;:::-;22598:3;22591:5;22587:15;22580:66;22665:3;22700:40;22736:2;22732;22728:11;22700:40;:::i;:::-;22684:14;;;22677:64;22760:3;22794:11;;;22788:18;22818:16;;;22815:36;;;22847:1;22844;22837:12;22815:36;22883:65;22940:7;22929:8;22925:2;22921:17;22883:65;:::i;:::-;22878:2;22871:5;22867:14;22860:89;;;22968:3;23010:2;23006;23002:11;22996:18;23039:2;23029:8;23026:16;23023:36;;;23055:1;23052;23045:12;23023:36;23091:65;23148:7;23137:8;23133:2;23129:17;23091:65;:::i;:::-;23075:14;;;23068:89;;;;-1:-1:-1;23079:5:43;21632:1555;-1:-1:-1;;;;;21632:1555:43:o;23882:635::-;23962:6;24015:2;24003:9;23994:7;23990:23;23986:32;23983:52;;;24031:1;24028;24021:12;23983:52;24064:9;24058:16;-1:-1:-1;;;;;24089:6:43;24086:30;24083:50;;;24129:1;24126;24119:12;24083:50;24152:22;;24205:4;24197:13;;24193:27;-1:-1:-1;24183:55:43;;24234:1;24231;24224:12;24183:55;24263:2;24257:9;24288:48;24304:31;24332:2;24304:31;:::i;24288:48::-;24359:2;24352:5;24345:17;24399:7;24394:2;24389;24385;24381:11;24377:20;24374:33;24371:53;;;24420:1;24417;24410:12;24371:53;24433:54;24484:2;24479;24472:5;24468:14;24463:2;24459;24455:11;24433:54;:::i;24522:756::-;-1:-1:-1;;;24928:3:43;24921:24;24903:3;24974:6;24968:13;24990:61;25044:6;25040:1;25035:3;25031:11;25024:4;25016:6;25012:17;24990:61;:::i;:::-;-1:-1:-1;;;25110:1:43;25070:16;;;25102:10;;;25095:25;25145:13;;25167:63;25145:13;25216:2;25208:11;;25201:4;25189:17;;25167:63;:::i;:::-;25250:17;25269:2;25246:26;;24522:756;-1:-1:-1;;;;24522:756:43:o;25283:745::-;-1:-1:-1;;;25689:3:43;25682:17;25664:3;25728:6;25722:13;25744:61;25798:6;25794:1;25789:3;25785:11;25778:4;25770:6;25766:17;25744:61;:::i;:::-;-1:-1:-1;;;25864:1:43;25824:16;;;25856:10;;;25849:23;25897:13;;25919:62;25897:13;25968:1;25960:10;;25953:4;25941:17;;25919:62;:::i;:::-;26001:17;26020:1;25997:25;;25283:745;-1:-1:-1;;;;25283:745:43:o;26033:400::-;26235:2;26217:21;;;26274:2;26254:18;;;26247:30;26313:34;26308:2;26293:18;;26286:62;-1:-1:-1;;;26379:2:43;26364:18;;26357:34;26423:3;26408:19;;26033:400::o;26845:408::-;27047:2;27029:21;;;27086:2;27066:18;;;27059:30;27125:34;27120:2;27105:18;;27098:62;-1:-1:-1;;;27191:2:43;27176:18;;27169:42;27243:3;27228:19;;26845:408::o;28780:125::-;28820:4;28848:1;28845;28842:8;28839:34;;;28853:18;;:::i;:::-;-1:-1:-1;28890:9:43;;28780:125::o;28910:505::-;29145:13;;29138:21;29131:29;29113:48;;29231:4;29219:17;;;29213:24;29206:32;29199:40;29177:20;;;29170:70;29300:4;29288:17;;;29282:24;-1:-1:-1;;;;;29278:50:43;29256:20;;;29249:80;29389:4;29377:17;;;29371:24;29397:10;29367:41;29345:20;;;29338:71;;;;29100:3;29085:19;;28910:505::o;29420:871::-;29483:5;29531:4;29519:9;29514:3;29510:19;29506:30;29503:50;;;29549:1;29546;29539:12;29503:50;29582:2;29576:9;29624:4;29616:6;29612:17;29695:6;29683:10;29680:22;-1:-1:-1;;;;;29647:10:43;29644:34;29641:62;29638:88;;;29706:18;;:::i;:::-;29746:10;29742:2;29735:22;;29775:6;29766:15;;29811:9;29805:16;29830:33;29855:7;29830:33;:::i;:::-;29872:23;;29940:2;29925:18;;29919:25;29953:30;29919:25;29953:30;:::i;:::-;30011:2;29999:15;;29992:32;30078:2;30063:18;;;30057:25;30040:15;;;30033:50;30128:2;30113:18;;30107:25;30163:1;30151:14;;30141:42;;30179:1;30176;30169:12;30141:42;30211:2;30199:15;;30192:32;30279:3;30264:19;;;30258:26;30240:16;;30233:52;;;;29420:871;;-1:-1:-1;29420:871:43:o;30296:369::-;30421:6;30429;30482:3;30470:9;30461:7;30457:23;30453:33;30450:53;;;30499:1;30496;30489:12;30450:53;30522:54;30568:7;30557:9;30522:54;:::i;:::-;30512:64;;30595;30651:7;30645:3;30634:9;30630:19;30595:64;:::i;:::-;30585:74;;30296:369;;;;;:::o;30670:355::-;30872:2;30854:21;;;30911:2;30891:18;;;30884:30;30950:33;30945:2;30930:18;;30923:61;31016:2;31001:18;;30670:355::o;31365:1087::-;31467:6;31520:3;31508:9;31499:7;31495:23;31491:33;31488:53;;;31537:1;31534;31527:12;31488:53;31570:2;31564:9;31612:3;31604:6;31600:16;31682:6;31670:10;31667:22;-1:-1:-1;;;;;31634:10:43;31631:34;31628:62;31625:88;;;31693:18;;:::i;:::-;31729:2;31722:22;31766:16;;31791:30;31766:16;31791:30;:::i;:::-;31830:21;;31896:2;31881:18;;31875:25;-1:-1:-1;;;;;;31931:27:43;;31919:40;;31909:68;;31973:1;31970;31963:12;31909:68;32005:2;31993:15;;31986:32;32051:47;32094:2;32079:18;;32051:47;:::i;:::-;32046:2;32038:6;32034:15;32027:72;32144:2;32133:9;32129:18;32123:25;32157:32;32181:7;32157:32;:::i;:::-;32217:2;32205:15;;32198:32;32275:3;32260:19;;32254:26;-1:-1:-1;;32311:49:43;;32299:62;;32289:90;;32375:1;32372;32365:12;32289:90;32407:3;32395:16;;32388:33;32399:6;31365:1087;-1:-1:-1;;;31365:1087:43:o;32457:1690::-;32584:6;32615:2;32658;32646:9;32637:7;32633:23;32629:32;32626:52;;;32674:1;32671;32664:12;32626:52;32707:9;32701:16;-1:-1:-1;;;;;32732:6:43;32729:30;32726:50;;;32772:1;32769;32762:12;32726:50;32795:22;;32848:4;32840:13;;32836:27;-1:-1:-1;32826:55:43;;32877:1;32874;32867:12;32826:55;32906:2;32900:9;32929:58;32945:41;32983:2;32945:41;:::i;32929:58::-;33021:15;;;33083:4;33122:11;;;33114:20;;33110:29;;;33052:12;;;;33009:3;33151:19;;;33148:39;;;33183:1;33180;33173:12;33148:39;33207:11;;;;33227:890;33243:6;33238:3;33235:15;33227:890;;;33323:2;33317:3;33308:7;33304:17;33300:26;33297:116;;;33367:1;33396:2;33392;33385:14;33297:116;33439:22;;:::i;:::-;33488:10;;33474:25;;33541:12;;;33535:19;33519:14;;;33512:43;33578:2;33622:12;;;33616:19;33600:14;;;33593:43;33659:2;33703:12;;;33697:19;33681:14;;;33674:43;33740:3;33785:12;;;33779:19;33763:14;;;33756:43;33822:3;33859:12;;;33853:19;33907:1;33895:14;;33885:115;;33952:1;33982:3;33977;33970:16;33885:115;34020:14;;;34013:31;34057:18;;33260:12;;;;34095;;;;33227:890;;;-1:-1:-1;34136:5:43;32457:1690;-1:-1:-1;;;;;;;32457:1690:43:o;34152:127::-;34213:10;34208:3;34204:20;34201:1;34194:31;34244:4;34241:1;34234:15;34268:4;34265:1;34258:15;34976:304;35062:6;35070;35078;35131:2;35119:9;35110:7;35106:23;35102:32;35099:52;;;35147:1;35144;35137:12;35099:52;35176:9;35170:16;35160:26;;35226:2;35215:9;35211:18;35205:25;35195:35;;35270:2;35259:9;35255:18;35249:25;35239:35;;34976:304;;;;;:::o;37120:435::-;37173:3;37211:5;37205:12;37238:6;37233:3;37226:19;37264:4;37293:2;37288:3;37284:12;37277:19;;37330:2;37323:5;37319:14;37351:1;37361:169;37375:6;37372:1;37369:13;37361:169;;;37436:13;;37424:26;;37470:12;;;;37505:15;;;;37397:1;37390:9;37361:169;;;-1:-1:-1;37546:3:43;;37120:435;-1:-1:-1;;;;;37120:435:43:o;37560:1786::-;-1:-1:-1;;;;;37911:32:43;;37893:51;;37841:2;37963;37981:18;;;37974:30;;;38053:13;;37866:18;;;38075:22;;;37812:4;;37841:2;38116;;38134:18;;;;38198:1;38194:14;;;38179:30;;38175:39;;38237:15;;;37812:4;38280:1037;38294:6;38291:1;38288:13;38280:1037;;;38387:2;38383:7;38371:9;38363:6;38359:22;38355:36;38350:3;38343:49;38421:6;38415:13;38451:4;38484:2;38478:9;38517:1;38513:2;38510:9;38500:43;;38523:18;;:::i;:::-;38556;;38621:11;;;38615:18;38635:6;38611:31;38594:15;;;38587:56;38686:11;;;38680:18;38663:15;;;38656:43;38742:11;;;38736:18;38719:15;;;38712:43;38778:4;38821:11;;;38815:18;2321:13;2314:21;38876:15;;;2302:34;38915:4;38960:11;;;38954:18;2321:13;2314:21;39017:15;;;2302:34;39056:4;39101:11;;;39095:18;39133:15;;;39126:27;;;39176:61;39221:15;;;39095:18;39176:61;:::i;:::-;39295:12;;;;39166:71;-1:-1:-1;;;39260:15:43;;;;38316:1;38309:9;38280:1037;;;-1:-1:-1;39334:6:43;;37560:1786;-1:-1:-1;;;;;;;;;;37560:1786:43:o;39351:1245::-;-1:-1:-1;;;;;39674:32:43;;39656:51;;39604:2;39726;39744:18;;;39737:30;;;39816:13;;39629:18;;;39838:22;;;39575:4;;39604:2;39879;;39897:18;;;;39961:1;39957:14;;;39942:30;;39938:39;;40000:15;;;39575:4;40043:524;40057:6;40054:1;40051:13;40043:524;;;40122:22;;;-1:-1:-1;;40118:36:43;40106:49;;40178:13;;40223:9;;40234:6;40219:22;40204:38;;40299:11;;;40293:18;40286:26;40279:34;40262:15;;;40255:59;40353:11;;40347:18;40385:15;;;40378:27;;;40428:59;40471:15;;;40347:18;40428:59;:::i;:::-;40545:12;;;;40418:69;-1:-1:-1;;40510:15:43;;;;40079:1;40072:9;40043:524;;40601:128;40641:3;40672:1;40668:6;40665:1;40662:13;40659:39;;;40678:18;;:::i;:::-;-1:-1:-1;40714:9:43;;40601:128::o;40734:135::-;40773:3;-1:-1:-1;;40794:17:43;;40791:43;;;40814:18;;:::i;:::-;-1:-1:-1;40861:1:43;40850:13;;40734:135::o;40874:112::-;40906:1;40932;40922:35;;40937:18;;:::i;:::-;-1:-1:-1;40971:9:43;;40874:112::o;40991:407::-;41193:2;41175:21;;;41232:2;41212:18;;;41205:30;41271:34;41266:2;41251:18;;41244:62;-1:-1:-1;;;41337:2:43;41322:18;;41315:41;41388:3;41373:19;;40991:407::o;42693:251::-;42763:6;42816:2;42804:9;42795:7;42791:23;42787:32;42784:52;;;42832:1;42829;42822:12;42784:52;42864:9;42858:16;42883:31;42908:5;42883:31;:::i;42949:732::-;-1:-1:-1;;;;;43292:15:43;;;43274:34;;43344:15;;;43339:2;43324:18;;43317:43;43396:15;;43391:2;43376:18;;43369:43;43443:2;43428:18;;43421:34;;;43492:3;43486;43471:19;;43464:32;;;43217:4;;43519:46;;43545:19;;43537:6;43519:46;:::i;:::-;43614:9;43606:6;43602:22;43596:3;43585:9;43581:19;43574:51;43642:33;43668:6;43660;43642:33;:::i;44453:450::-;44674:6;44663:9;44656:25;44717:2;44712;44701:9;44697:18;44690:30;44637:4;44743:45;44784:2;44773:9;44769:18;44761:6;44743:45;:::i;:::-;44836:9;44828:6;44824:22;44819:2;44808:9;44804:18;44797:50;44864:33;44890:6;44882;44864:33;:::i;:::-;44856:41;44453:450;-1:-1:-1;;;;;;44453:450:43:o;47568:903::-;47666:6;47719:3;47707:9;47698:7;47694:23;47690:33;47687:53;;;47736:1;47733;47726:12;47687:53;47769:2;47763:9;47811:3;47803:6;47799:16;47881:6;47869:10;47866:22;-1:-1:-1;;;;;47833:10:43;47830:34;47827:62;47824:88;;;47892:18;;:::i;:::-;47928:2;47921:22;47965:16;;47990:28;47965:16;47990:28;:::i;:::-;48027:21;;48093:2;48078:18;;48072:25;48106:30;48072:25;48106:30;:::i;:::-;48164:2;48152:15;;48145:32;48222:2;48207:18;;48201:25;48235:33;48201:25;48235:33;:::i;:::-;48296:2;48284:15;;48277:32;48354:2;48339:18;;48333:25;48367:32;48333:25;48367:32;:::i;:::-;48427:2;48415:15;;48408:32;48419:6;47568:903;-1:-1:-1;;;47568:903:43:o;49179:561::-;-1:-1:-1;;;;;49476:15:43;;;49458:34;;49528:15;;49523:2;49508:18;;49501:43;49575:2;49560:18;;49553:34;;;49618:2;49603:18;;49596:34;;;49438:3;49661;49646:19;;49639:32;;;49401:4;;49688:46;;49714:19;;49706:6;49688:46;:::i;50847:245::-;50914:6;50967:2;50955:9;50946:7;50942:23;50938:32;50935:52;;;50983:1;50980;50973:12;50935:52;51015:9;51009:16;51034:28;51056:5;51034:28;:::i;53454:274::-;53583:3;53621:6;53615:13;53637:53;53683:6;53678:3;53671:4;53663:6;53659:17;53637:53;:::i;:::-;53706:16;;;;;53454:274;-1:-1:-1;;53454:274:43:o"
            },
            "methodIdentifiers": {
              "NotionalV2()": "19b53d35",
              "WETH()": "ad5c4648",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "asset()": "38d52e0f",
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "convertToAssets(uint256)": "07a2d13a",
              "convertToShares(uint256)": "c6e6f592",
              "decimals()": "313ce567",
              "defaultOperators()": "06e48538",
              "deposit(uint256,address)": "6e553f65",
              "getAssetToken()": "f8eef10f",
              "getCurrencyId()": "cf387fed",
              "getDecodedID()": "48d8f98d",
              "getMarketIndex()": "cb803ceb",
              "getMaturity()": "e16695b5",
              "getToken(bool)": "51489551",
              "getUnderlyingToken()": "ee719bc8",
              "getfCashId()": "0558d500",
              "granularity()": "556f0dc7",
              "hasMatured()": "a1093295",
              "initialize(uint16,uint40)": "152b838c",
              "isOperatorFor(address,address)": "d95b6371",
              "maxDeposit(address)": "402d267d",
              "maxMint(address)": "c63d75b6",
              "maxRedeem(address)": "d905777e",
              "maxWithdraw(address)": "ce96cb77",
              "mint(uint256,address)": "94bf804d",
              "mintViaAsset(uint256,uint88,address,uint32)": "0db8481c",
              "mintViaUnderlying(uint256,uint88,address,uint32)": "29cf1405",
              "name()": "06fdde03",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "previewDeposit(uint256)": "ef8b30f7",
              "previewMint(uint256)": "b3d7f6b9",
              "previewRedeem(uint256)": "4cdad506",
              "previewWithdraw(uint256)": "0a28a477",
              "redeem(uint256,(bool,bool,address,uint32))": "d84878b8",
              "redeem(uint256,address,address)": "ba087652",
              "redeemToAsset(uint256,address,uint32)": "3d3192cb",
              "redeemToUnderlying(uint256,address,uint32)": "745d08d9",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalAssets()": "01e1d114",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256,address,address)": "b460af94"
            }
          }
        }
      },
      "contracts/protocol/integration/wrap/notional/WrappedfCashFactory.sol": {
        "WrappedfCashFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_beacon",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "wrapper",
                  "type": "address"
                }
              ],
              "name": "WrapperDeployed",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "BEACON",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "SALT",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "computeAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "deployWrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1957": {
                  "entryPoint": null,
                  "id": 1957,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4987": {
                  "entryPoint": null,
                  "id": 4987,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 64,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051610f50380380610f5083398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610ebf61009160003960008181609101526102810152610ebf6000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063422a73a4146200005757806349493a4d146200008b57806395fd976514620000b3578063ba9a91a514620000ca575b600080fd5b6200006e6200006836600462000406565b620000e2565b6040516001600160a01b0390911681526020015b60405180910390f35b6200006e7f000000000000000000000000000000000000000000000000000000000000000081565b6200006e620000c436600462000406565b6200018c565b620000d3600081565b60405190815260200162000082565b600080620000f184846200018c565b90506001600160a01b0381163b156200010c57905062000186565b600062000126818062000120888862000205565b620002e4565b6040805161ffff8816815264ffffffffff871660208201526001600160a01b0383168183015290519192507fc83ad9c9cf773a3378ccc5ce465c8524049645b2639a8c81816a45812c2b2459919081900360600190a19150620001869050565b92915050565b6000620001fe816200019f858562000205565b80519060200120604080516001600160f81b03196020808301919091523060601b6bffffffffffffffffffffffff1916602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b60405161ffff8316602482015264ffffffffff8216604482015260609060009060640160408051601f19818403018152918152602080830180516001600160e01b031663054ae0e360e21b179052905191925062000265908201620003f8565b601f1982820381018352601f909101166040819052620002ac907f000000000000000000000000000000000000000000000000000000000000000090849060200162000486565b60408051601f1981840301815290829052620002cc9291602001620004ca565b60405160208183030381529060405291505092915050565b600080844710156200033d5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b82516200038d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000334565b8383516020850187f590506001600160a01b038116620003f05760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640162000334565b949350505050565b61098c80620004fe83390190565b600080604083850312156200041a57600080fd5b823561ffff811681146200042d57600080fd5b9150602083013564ffffffffff811681146200044857600080fd5b809150509250929050565b60005b838110156200047057818101518382015260200162000456565b8381111562000480576000848401525b50505050565b60018060a01b03831681526040602082015260008251806040840152620004b581606085016020870162000453565b601f01601f1916919091016060019392505050565b60008351620004de81846020880162000453565b835190830190620004f481836020880162000453565b0194935050505056fe608060405260405161098c38038061098c8339810160408190526100229161048f565b818161004f60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161054f565b6000805160206109458339815191521461006b5761006b610574565b61007782826000610080565b505050506105f4565b6100898361014b565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100ca5750805b1561014657610144836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610134919061058a565b836102dc60201b6100271760201c565b505b505050565b61015e8161030860201b6100531760201c565b6101bd5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610231816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610222919061058a565b61030860201b6100531760201c565b6102965760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b4565b806102bb60008051602061094583398151915260001b61031760201b6100621760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061030183836040518060600160405280602781526020016109656027913961031a565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b4565b600080856001600160a01b03168560405161039d91906105a5565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5090925090506103ee8282866103f8565b9695505050505050565b60608315610407575081610301565b8251156104175782518084602001fd5b8160405162461bcd60e51b81526004016101b491906105c1565b80516001600160a01b038116811461044857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561047e578181015183820152602001610466565b838111156101445750506000910152565b600080604083850312156104a257600080fd5b6104ab83610431565b60208401519092506001600160401b03808211156104c857600080fd5b818501915085601f8301126104dc57600080fd5b8151818111156104ee576104ee61044d565b604051601f8201601f19908116603f011681019083821181831017156105165761051661044d565b8160405282815288602084870101111561052f57600080fd5b610540836020830160208801610463565b80955050505050509250929050565b60008282101561056f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561059c57600080fd5b61030182610431565b600082516105b7818460208701610463565b9190910192915050565b60208152600082518060208401526105e0816040850160208701610463565b601f01601f19169190910160400192915050565b610342806106036000396000f3fe60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df584e06121e7575b78856bfb9100e501991c5a1d3346e026d24f463feb20c6364736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220629dd22ba28d8483d7b4c845db2fb2f5c003d64070672dca2b6b5849fc56feec64736f6c634300080b0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF50 CODESIZE SUB DUP1 PUSH2 0xF50 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xEBF PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x91 ADD MSTORE PUSH2 0x281 ADD MSTORE PUSH2 0xEBF PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x52 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x422A73A4 EQ PUSH3 0x57 JUMPI DUP1 PUSH4 0x49493A4D EQ PUSH3 0x8B JUMPI DUP1 PUSH4 0x95FD9765 EQ PUSH3 0xB3 JUMPI DUP1 PUSH4 0xBA9A91A5 EQ PUSH3 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6E PUSH3 0x68 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0xE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6E PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x6E PUSH3 0xC4 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0x18C JUMP JUMPDEST PUSH3 0xD3 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xF1 DUP5 DUP5 PUSH3 0x18C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH3 0x10C JUMPI SWAP1 POP PUSH3 0x186 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x126 DUP2 DUP1 PUSH3 0x120 DUP9 DUP9 PUSH3 0x205 JUMP JUMPDEST PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP9 AND DUP2 MSTORE PUSH5 0xFFFFFFFFFF DUP8 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xC83AD9C9CF773A3378CCC5CE465C8524049645B2639A8C81816A45812C2B2459 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 SWAP2 POP PUSH3 0x186 SWAP1 POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FE DUP2 PUSH3 0x19F DUP6 DUP6 PUSH3 0x205 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x21 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x55 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x75 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SWAP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x54AE0E3 PUSH1 0xE2 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH3 0x265 SWAP1 DUP3 ADD PUSH3 0x3F8 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x2AC SWAP1 PUSH32 0x0 SWAP1 DUP5 SWAP1 PUSH1 0x20 ADD PUSH3 0x486 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x2CC SWAP3 SWAP2 PUSH1 0x20 ADD PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SELFBALANCE LT ISZERO PUSH3 0x33D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A20696E73756666696369656E742062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A2062797465636F6465206C656E677468206973207A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST DUP4 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP8 CREATE2 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A204661696C6564206F6E206465706C6F7900000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x98C DUP1 PUSH3 0x4FE DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x470 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x456 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x480 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x4B5 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x453 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH3 0x4DE DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH3 0x4F4 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98C CODESIZE SUB DUP1 PUSH2 0x98C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x48F JUMP JUMPDEST DUP2 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x6B JUMPI PUSH2 0x6B PUSH2 0x574 JUMP JUMPDEST PUSH2 0x77 DUP3 DUP3 PUSH1 0x0 PUSH2 0x80 JUMP JUMPDEST POP POP POP POP PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x89 DUP4 PUSH2 0x14B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCA JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH2 0x144 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST DUP4 PUSH2 0x2DC PUSH1 0x20 SHL PUSH2 0x27 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x15E DUP2 PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST DUP1 PUSH2 0x2BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x317 PUSH1 0x20 SHL PUSH2 0x62 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x301 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x965 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x31A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3EE DUP3 DUP3 DUP7 PUSH2 0x3F8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x407 JUMPI POP DUP2 PUSH2 0x301 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x417 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B4 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x144 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AB DUP4 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4EE PUSH2 0x44D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x516 JUMPI PUSH2 0x516 PUSH2 0x44D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x463 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x56F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x301 DUP3 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5B7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5E0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x603 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DF584E MOD SLT 0x1E PUSH22 0x75B78856BFB9100E501991C5A1D3346E026D24F463FE 0xB2 0xC PUSH4 0x64736F6C PUSH4 0x4300080B STOP CALLER LOG3 CREATE 0xAD PUSH21 0xE5423AEBFD80D3EF4346578335A9A72AEAEE59FF6C 0xB3 PC 0x2B CALLDATALOAD SGT RETURNDATASIZE POP COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220629DD2 0x2B LOG2 DUP14 DUP5 DUP4 0xD7 0xB4 0xC8 GASLIMIT 0xDB 0x2F 0xB2 CREATE2 0xC0 SUB 0xD6 BLOCKHASH PUSH17 0x672DCA2B6B5849FC56FEEC64736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "177:132:10:-:0;;;239:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;604:16:34;;;177:132:10;;14:290:43;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:43:o;:::-;177:132:10;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@BEACON_4965": {
                  "entryPoint": null,
                  "id": 4965,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@SALT_4968": {
                  "entryPoint": null,
                  "id": 4968,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getByteCode_5019": {
                  "entryPoint": 517,
                  "id": 5019,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@computeAddress_3559": {
                  "entryPoint": null,
                  "id": 3559,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@computeAddress_3598": {
                  "entryPoint": null,
                  "id": 3598,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@computeAddress_5086": {
                  "entryPoint": 396,
                  "id": 5086,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@deployWrapper_5065": {
                  "entryPoint": 226,
                  "id": 5065,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@deploy_3539": {
                  "entryPoint": 740,
                  "id": 3539,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": null,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint16t_uint40": {
                  "entryPoint": 1030,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1226,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1158,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40_t_address__to_t_uint16_t_uint40_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1107,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4247:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "99:361:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "145:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "154:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "157:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "147:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "147:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "147:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "120:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "116:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "116:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "141:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "112:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "112:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "109:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "170:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "196:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "183:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "183:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "174:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "256:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "265:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "268:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "258:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "258:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "258:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "228:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "239:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "246:6:43",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "235:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "235:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "225:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "225:29:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "215:57:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "281:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "291:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "281:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "305:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "337:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "348:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "333:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "333:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "320:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "320:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "309:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "412:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "421:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "424:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "414:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "414:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "414:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "374:7:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "387:7:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "396:12:43",
                                            "type": "",
                                            "value": "0xffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "383:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "383:26:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "371:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "371:39:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "364:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "364:47:43"
                              },
                              "nodeType": "YulIf",
                              "src": "361:67:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "437:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "447:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "437:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint16t_uint40",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "57:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "68:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "80:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "88:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:446:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "566:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "576:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "599:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "584:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "584:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "576:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "618:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "633:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "649:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "654:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "645:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "645:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "658:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "641:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "641:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "629:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "629:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "611:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "611:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "611:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "535:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "546:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "557:4:43",
                            "type": ""
                          }
                        ],
                        "src": "465:203:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "774:76:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "784:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "796:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "807:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "784:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "826:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "837:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "819:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "819:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "819:25:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "743:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "754:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "765:4:43",
                            "type": ""
                          }
                        ],
                        "src": "673:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1008:220:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1018:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1030:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1041:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1026:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1026:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1018:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1060:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1075:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1083:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1071:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1071:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1053:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1053:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1053:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1111:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1122:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1107:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1107:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1131:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1139:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1127:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1127:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1100:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1100:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1100:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1173:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1184:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1169:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1169:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1193:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1209:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1214:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1205:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1205:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1218:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1201:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1201:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1189:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1189:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1162:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1162:60:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40_t_address__to_t_uint16_t_uint40_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "961:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "972:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "980:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "988:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "999:4:43",
                            "type": ""
                          }
                        ],
                        "src": "855:373:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1358:151:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1368:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1380:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1391:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1376:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1376:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1410:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1425:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1433:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1421:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1421:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1403:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1403:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1403:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1461:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1472:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1457:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1457:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1481:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1489:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1477:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1477:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1450:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1450:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1450:53:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1319:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1330:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1338:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1349:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1233:276:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1567:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1577:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1586:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1581:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1646:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1671:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "1676:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1667:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1667:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1690:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1695:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1686:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1686:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1680:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1680:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1660:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1660:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1660:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1607:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1610:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1604:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1604:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1618:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1620:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1629:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1632:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1625:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1625:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1620:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1600:3:43",
                                "statements": []
                              },
                              "src": "1596:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1735:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1748:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "1753:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1744:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1744:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1762:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1737:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1737:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1737:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1724:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1727:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1721:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1721:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1718:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "1545:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "1550:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1555:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1514:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1924:331:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1941:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1972:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1977:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1968:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1968:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1981:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1964:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1964:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1952:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1952:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1934:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1934:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1934:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2016:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2001:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2001:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2021:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1994:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1994:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1994:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2033:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2053:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2047:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2047:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2037:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2080:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2091:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2076:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2076:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2096:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2069:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2069:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2069:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2138:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2146:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2134:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2134:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2155:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2166:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2151:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2151:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2171:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2112:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2112:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2112:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2187:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2203:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2222:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2230:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2218:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2218:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2239:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2235:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2214:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2214:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2199:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2199:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2246:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2195:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2195:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2187:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1885:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1896:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1904:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1915:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1777:478:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2443:283:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2453:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2473:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2467:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2467:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2457:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2515:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2523:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2511:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2511:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2530:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2535:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2489:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2489:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2489:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2551:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2568:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2573:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2564:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2564:16:43"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2555:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2589:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2611:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2605:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2605:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2593:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2653:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2661:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2649:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2649:17:43"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2668:5:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2675:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2627:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2627:57:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2627:57:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2693:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2704:5:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2711:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2700:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2700:20:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2693:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2411:3:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2416:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2424:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2435:3:43",
                            "type": ""
                          }
                        ],
                        "src": "2260:466:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2905:179:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2922:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2933:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2915:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2915:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2915:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2956:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2967:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2952:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2952:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2972:2:43",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2945:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2945:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2945:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2995:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3006:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2991:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2991:18:43"
                                  },
                                  {
                                    "hexValue": "437265617465323a20696e73756666696369656e742062616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3011:31:43",
                                    "type": "",
                                    "value": "Create2: insufficient balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2984:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2984:59:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2984:59:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3052:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3064:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3075:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3060:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3060:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3052:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2882:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2896:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2731:353:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3263:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3280:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3291:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3273:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3273:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3273:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3314:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3325:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3310:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3330:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3303:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3303:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3303:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3353:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3364:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3349:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3349:18:43"
                                  },
                                  {
                                    "hexValue": "437265617465323a2062797465636f6465206c656e677468206973207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3369:34:43",
                                    "type": "",
                                    "value": "Create2: bytecode length is zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3342:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3342:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3342:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3413:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3425:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3436:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3421:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3421:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3413:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3240:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3254:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3089:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3624:175:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3641:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3652:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3634:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3634:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3634:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3675:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3686:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3671:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3671:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3691:2:43",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3664:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3664:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3664:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3714:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3725:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3710:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3710:18:43"
                                  },
                                  {
                                    "hexValue": "437265617465323a204661696c6564206f6e206465706c6f79",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3730:27:43",
                                    "type": "",
                                    "value": "Create2: Failed on deploy"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3703:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3703:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3703:55:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3767:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3779:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3790:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3775:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3775:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3767:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3601:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3615:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3450:349:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4005:240:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4022:3:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4031:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4043:3:43",
                                            "type": "",
                                            "value": "248"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4048:3:43",
                                            "type": "",
                                            "value": "255"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4039:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4039:13:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4027:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4027:26:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4015:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4015:39:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4015:39:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4074:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4079:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4070:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4070:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4091:2:43",
                                            "type": "",
                                            "value": "96"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4095:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4087:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4087:15:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4108:26:43",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "4104:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4104:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4083:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4083:53:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4063:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4063:74:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4063:74:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4157:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4162:2:43",
                                        "type": "",
                                        "value": "21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4153:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4153:12:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4167:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4146:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4146:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4146:28:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4194:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4199:2:43",
                                        "type": "",
                                        "value": "53"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4190:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4190:12:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4204:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4183:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4183:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4183:28:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4220:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4231:3:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4236:2:43",
                                    "type": "",
                                    "value": "85"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4227:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4227:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4220:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3957:3:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3962:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3970:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3978:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3986:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3997:3:43",
                            "type": ""
                          }
                        ],
                        "src": "3804:441:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_uint16t_uint40(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint16_t_uint40_t_address__to_t_uint16_t_uint40_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        copy_memory_to_memory(add(value1, 32), add(headStart, 96), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Create2: insufficient balance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Create2: bytecode length is zero\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Create2: Failed on deploy\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "4965": [
                  {
                    "length": 32,
                    "start": 145
                  },
                  {
                    "length": 32,
                    "start": 641
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063422a73a4146200005757806349493a4d146200008b57806395fd976514620000b3578063ba9a91a514620000ca575b600080fd5b6200006e6200006836600462000406565b620000e2565b6040516001600160a01b0390911681526020015b60405180910390f35b6200006e7f000000000000000000000000000000000000000000000000000000000000000081565b6200006e620000c436600462000406565b6200018c565b620000d3600081565b60405190815260200162000082565b600080620000f184846200018c565b90506001600160a01b0381163b156200010c57905062000186565b600062000126818062000120888862000205565b620002e4565b6040805161ffff8816815264ffffffffff871660208201526001600160a01b0383168183015290519192507fc83ad9c9cf773a3378ccc5ce465c8524049645b2639a8c81816a45812c2b2459919081900360600190a19150620001869050565b92915050565b6000620001fe816200019f858562000205565b80519060200120604080516001600160f81b03196020808301919091523060601b6bffffffffffffffffffffffff1916602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b60405161ffff8316602482015264ffffffffff8216604482015260609060009060640160408051601f19818403018152918152602080830180516001600160e01b031663054ae0e360e21b179052905191925062000265908201620003f8565b601f1982820381018352601f909101166040819052620002ac907f000000000000000000000000000000000000000000000000000000000000000090849060200162000486565b60408051601f1981840301815290829052620002cc9291602001620004ca565b60405160208183030381529060405291505092915050565b600080844710156200033d5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b82516200038d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000334565b8383516020850187f590506001600160a01b038116620003f05760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640162000334565b949350505050565b61098c80620004fe83390190565b600080604083850312156200041a57600080fd5b823561ffff811681146200042d57600080fd5b9150602083013564ffffffffff811681146200044857600080fd5b809150509250929050565b60005b838110156200047057818101518382015260200162000456565b8381111562000480576000848401525b50505050565b60018060a01b03831681526040602082015260008251806040840152620004b581606085016020870162000453565b601f01601f1916919091016060019392505050565b60008351620004de81846020880162000453565b835190830190620004f481836020880162000453565b0194935050505056fe608060405260405161098c38038061098c8339810160408190526100229161048f565b818161004f60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161054f565b6000805160206109458339815191521461006b5761006b610574565b61007782826000610080565b505050506105f4565b6100898361014b565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100ca5750805b1561014657610144836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610134919061058a565b836102dc60201b6100271760201c565b505b505050565b61015e8161030860201b6100531760201c565b6101bd5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610231816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610222919061058a565b61030860201b6100531760201c565b6102965760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b4565b806102bb60008051602061094583398151915260001b61031760201b6100621760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061030183836040518060600160405280602781526020016109656027913961031a565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b4565b600080856001600160a01b03168560405161039d91906105a5565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5090925090506103ee8282866103f8565b9695505050505050565b60608315610407575081610301565b8251156104175782518084602001fd5b8160405162461bcd60e51b81526004016101b491906105c1565b80516001600160a01b038116811461044857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561047e578181015183820152602001610466565b838111156101445750506000910152565b600080604083850312156104a257600080fd5b6104ab83610431565b60208401519092506001600160401b03808211156104c857600080fd5b818501915085601f8301126104dc57600080fd5b8151818111156104ee576104ee61044d565b604051601f8201601f19908116603f011681019083821181831017156105165761051661044d565b8160405282815288602084870101111561052f57600080fd5b610540836020830160208801610463565b80955050505050509250929050565b60008282101561056f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561059c57600080fd5b61030182610431565b600082516105b7818460208701610463565b9190910192915050565b60208152600082518060208401526105e0816040850160208701610463565b601f01601f19169190910160400192915050565b610342806106036000396000f3fe60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df584e06121e7575b78856bfb9100e501991c5a1d3346e026d24f463feb20c6364736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220629dd22ba28d8483d7b4c845db2fb2f5c003d64070672dca2b6b5849fc56feec64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x52 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x422A73A4 EQ PUSH3 0x57 JUMPI DUP1 PUSH4 0x49493A4D EQ PUSH3 0x8B JUMPI DUP1 PUSH4 0x95FD9765 EQ PUSH3 0xB3 JUMPI DUP1 PUSH4 0xBA9A91A5 EQ PUSH3 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6E PUSH3 0x68 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0xE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6E PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x6E PUSH3 0xC4 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0x18C JUMP JUMPDEST PUSH3 0xD3 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xF1 DUP5 DUP5 PUSH3 0x18C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH3 0x10C JUMPI SWAP1 POP PUSH3 0x186 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x126 DUP2 DUP1 PUSH3 0x120 DUP9 DUP9 PUSH3 0x205 JUMP JUMPDEST PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP9 AND DUP2 MSTORE PUSH5 0xFFFFFFFFFF DUP8 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xC83AD9C9CF773A3378CCC5CE465C8524049645B2639A8C81816A45812C2B2459 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 SWAP2 POP PUSH3 0x186 SWAP1 POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FE DUP2 PUSH3 0x19F DUP6 DUP6 PUSH3 0x205 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x21 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x55 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x75 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SWAP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x54AE0E3 PUSH1 0xE2 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH3 0x265 SWAP1 DUP3 ADD PUSH3 0x3F8 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x2AC SWAP1 PUSH32 0x0 SWAP1 DUP5 SWAP1 PUSH1 0x20 ADD PUSH3 0x486 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x2CC SWAP3 SWAP2 PUSH1 0x20 ADD PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SELFBALANCE LT ISZERO PUSH3 0x33D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A20696E73756666696369656E742062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A2062797465636F6465206C656E677468206973207A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST DUP4 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP8 CREATE2 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A204661696C6564206F6E206465706C6F7900000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x98C DUP1 PUSH3 0x4FE DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x470 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x456 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x480 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x4B5 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x453 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH3 0x4DE DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH3 0x4F4 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98C CODESIZE SUB DUP1 PUSH2 0x98C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x48F JUMP JUMPDEST DUP2 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x6B JUMPI PUSH2 0x6B PUSH2 0x574 JUMP JUMPDEST PUSH2 0x77 DUP3 DUP3 PUSH1 0x0 PUSH2 0x80 JUMP JUMPDEST POP POP POP POP PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x89 DUP4 PUSH2 0x14B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCA JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH2 0x144 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST DUP4 PUSH2 0x2DC PUSH1 0x20 SHL PUSH2 0x27 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x15E DUP2 PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST DUP1 PUSH2 0x2BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x317 PUSH1 0x20 SHL PUSH2 0x62 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x301 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x965 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x31A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3EE DUP3 DUP3 DUP7 PUSH2 0x3F8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x407 JUMPI POP DUP2 PUSH2 0x301 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x417 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B4 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x144 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AB DUP4 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4EE PUSH2 0x44D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x516 JUMPI PUSH2 0x516 PUSH2 0x44D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x463 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x56F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x301 DUP3 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5B7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5E0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x603 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DF584E MOD SLT 0x1E PUSH22 0x75B78856BFB9100E501991C5A1D3346E026D24F463FE 0xB2 0xC PUSH4 0x64736F6C PUSH4 0x4300080B STOP CALLER LOG3 CREATE 0xAD PUSH21 0xE5423AEBFD80D3EF4346578335A9A72AEAEE59FF6C 0xB3 PC 0x2B CALLDATALOAD SGT RETURNDATASIZE POP COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220629DD2 0x2B LOG2 DUP14 DUP5 DUP4 0xD7 0xB4 0xC8 GASLIMIT 0xDB 0x2F 0xB2 CREATE2 0xC0 SUB 0xD6 BLOCKHASH PUSH17 0x672DCA2B6B5849FC56FEEC64736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "177:132:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;953:549:34;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;629:32:43;;;611:51;;599:2;584:18;953:549:34;;;;;;;;341:31;;;;;1508:189;;;;;;:::i;:::-;;:::i;378:32::-;;409:1;378:32;;;;;819:25:43;;;807:2;792:18;378:32:34;673:177:43;953:549:34;1030:7;1049:24;1076:36;1091:10;1103:8;1076:14;:36::i;:::-;1049:63;-1:-1:-1;;;;;;1465:19:25;;;:23;1123:373:34;;1268:16;-1:-1:-1;1261:23:34;;1123:373;1315:15;1333:59;1315:15;;1357:34;1370:10;1382:8;1357:12;:34::i;:::-;1333:14;:59::i;:::-;1411:46;;;1083:6:43;1071:19;;1053:38;;1139:12;1127:25;;1122:2;1107:18;;1100:53;-1:-1:-1;;;;;1189:32:43;;1169:18;;;1162:60;1411:46:34;;1189:32:43;;-1:-1:-1;1411:46:34;;;;;;1041:2:43;1411:46:34;;;1478:7;-1:-1:-1;1471:14:34;;-1:-1:-1;1471:14:34;953:549;;;;;:::o;1508:189::-;1589:7;1615:75;1589:7;1654:34;1667:10;1679:8;1654:12;:34::i;:::-;1644:45;;;;;;2363:60:27;;;-1:-1:-1;;;;;;2363:60:27;;;;4015:39:43;;;;1931:4:27;4091:2:43;4087:15;-1:-1:-1;;4083:53:43;4070:11;;;4063:74;4153:12;;;4146:28;;;4190:12;;;;4183:28;;;2363:60:27;;;;;;;;;;4227:12:43;;;;2363:60:27;;;2353:71;;;;;1862:7;;1615:75:34;1608:82;1508:189;-1:-1:-1;;;1508:189:34:o;633:314::-;766:74;;1433:6:43;1421:19;;766:74:34;;;1403:38:43;1489:12;1477:25;;1457:18;;;1450:53;714:12:34;;738:25;;1376:18:43;;766:74:34;;;-1:-1:-1;;766:74:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;766:74:34;-1:-1:-1;;;766:74:34;;;874:31;;766:74;;-1:-1:-1;874:31:34;;;;;:::i;:::-;-1:-1:-1;;874:31:34;;;;;;;;;;;;;;;;907:32;;918:6;;926:12;;874:31;907:32;;:::i;:::-;;;;-1:-1:-1;;907:32:34;;;;;;;;;;857:83;;;907:32;857:83;;:::i;:::-;;;;;;;;;;;;;850:90;;;633:314;;;;:::o;1066:509:27:-;1183:7;1202:12;1257:6;1232:21;:31;;1224:73;;;;-1:-1:-1;;;1224:73:27;;2933:2:43;1224:73:27;;;2915:21:43;2972:2;2952:18;;;2945:30;3011:31;2991:18;;;2984:59;3060:18;;1224:73:27;;;;;;;;;1315:15;;1307:65;;;;-1:-1:-1;;;1307:65:27;;3291:2:43;1307:65:27;;;3273:21:43;;;3310:18;;;3303:30;3369:34;3349:18;;;3342:62;3421:18;;1307:65:27;3089:356:43;1307:65:27;1467:4;1456:8;1450:15;1443:4;1433:8;1429:19;1421:6;1413:59;1405:67;-1:-1:-1;;;;;;1499:18:27;;1491:56;;;;-1:-1:-1;;;1491:56:27;;3652:2:43;1491:56:27;;;3634:21:43;3691:2;3671:18;;;3664:30;3730:27;3710:18;;;3703:55;3775:18;;1491:56:27;3450:349:43;1491:56:27;1564:4;1066:509;-1:-1:-1;;;;1066:509:27:o;-1:-1:-1:-;;;;;;;;:::o;14:446:43:-;80:6;88;141:2;129:9;120:7;116:23;112:32;109:52;;;157:1;154;147:12;109:52;196:9;183:23;246:6;239:5;235:18;228:5;225:29;215:57;;268:1;265;258:12;215:57;291:5;-1:-1:-1;348:2:43;333:18;;320:32;396:12;383:26;;371:39;;361:67;;424:1;421;414:12;361:67;447:7;437:17;;;14:446;;;;;:::o;1514:258::-;1586:1;1596:113;1610:6;1607:1;1604:13;1596:113;;;1686:11;;;1680:18;1667:11;;;1660:39;1632:2;1625:10;1596:113;;;1727:6;1724:1;1721:13;1718:48;;;1762:1;1753:6;1748:3;1744:16;1737:27;1718:48;;1514:258;;;:::o;1777:478::-;1981:1;1977;1972:3;1968:11;1964:19;1956:6;1952:32;1941:9;1934:51;2021:2;2016;2005:9;2001:18;1994:30;1915:4;2053:6;2047:13;2096:6;2091:2;2080:9;2076:18;2069:34;2112:66;2171:6;2166:2;2155:9;2151:18;2146:2;2138:6;2134:15;2112:66;:::i;:::-;2239:2;2218:15;-1:-1:-1;;2214:29:43;2199:45;;;;2246:2;2195:54;;1777:478;-1:-1:-1;;;1777:478:43:o;2260:466::-;2435:3;2473:6;2467:13;2489:53;2535:6;2530:3;2523:4;2515:6;2511:17;2489:53;:::i;:::-;2605:13;;2564:16;;;;2627:57;2605:13;2564:16;2661:4;2649:17;;2627:57;:::i;:::-;2700:20;;2260:466;-1:-1:-1;;;;2260:466:43:o"
            },
            "methodIdentifiers": {
              "BEACON()": "49493a4d",
              "SALT()": "ba9a91a5",
              "computeAddress(uint16,uint40)": "95fd9765",
              "deployWrapper(uint16,uint40)": "422a73a4"
            }
          }
        }
      },
      "contracts/protocol/integration/wrap/notional/nBeaconProxy.sol": {
        "nBeaconProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1976": {
                  "entryPoint": null,
                  "id": 1976,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5104": {
                  "entryPoint": null,
                  "id": 5104,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setBeacon_2387": {
                  "entryPoint": 335,
                  "id": 2387,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeBeaconToAndCall_2425": {
                  "entryPoint": 132,
                  "id": 2425,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@functionDelegateCall_3399": {
                  "entryPoint": 736,
                  "id": 3399,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3434": {
                  "entryPoint": 798,
                  "id": 3434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_3625": {
                  "entryPoint": 795,
                  "id": 3625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 780,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 1020,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1077,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1422,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 1171,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1449,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1477,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 1363,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1127,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x01": {
                  "entryPoint": 1400,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 1105,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4030:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:43"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:43",
                            "type": ""
                          }
                        ],
                        "src": "14:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "228:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "245:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "252:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "257:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "248:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "248:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "238:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "238:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "285:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "288:4:43",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "278:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "309:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "302:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "196:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "381:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "391:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "400:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "395:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "460:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "490:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "481:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "481:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "504:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "509:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "500:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "500:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "494:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "494:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "474:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "474:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "474:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "421:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "424:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "418:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "418:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "432:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "434:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "446:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "439:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "439:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "434:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "414:3:43",
                                "statements": []
                              },
                              "src": "410:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "549:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "562:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "567:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "558:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "558:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "576:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "551:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "551:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "551:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "541:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "535:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "535:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "532:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "359:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "364:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "369:6:43",
                            "type": ""
                          }
                        ],
                        "src": "328:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "698:861:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "744:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "753:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "756:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "746:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "746:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "746:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "728:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "715:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "715:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "740:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "711:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "711:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "708:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "769:50:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "779:29:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "779:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "769:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "828:39:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "852:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "863:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "848:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "848:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "842:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "842:25:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "832:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "876:28:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "894:2:43",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "898:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "890:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "890:10:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "902:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "886:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "886:18:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "880:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "931:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "940:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "943:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "933:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "933:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "933:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "919:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "927:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "916:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "916:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "913:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "956:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "970:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "981:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "966:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "966:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "960:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1036:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1045:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1048:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1038:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1038:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1015:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1019:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1011:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1011:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1026:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1007:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1007:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1000:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1000:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "997:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1061:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1071:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1071:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1065:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1103:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1105:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1105:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1105:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1095:2:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1092:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1092:10:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1089:36:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1134:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1148:2:43",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1144:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1144:7:43"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1138:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1160:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1180:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1164:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1192:71:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1214:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1238:2:43"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1242:4:43",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1234:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1234:13:43"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1249:2:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1230:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1230:22:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1254:2:43",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1226:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1226:31:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1259:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1222:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1222:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1210:53:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1196:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1322:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1324:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1324:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1324:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:10:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1293:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1278:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1278:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1301:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1313:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1298:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1298:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:46:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1272:72:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1360:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1364:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1353:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1353:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1353:22:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1391:6:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1399:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1384:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1384:18:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1384:18:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1448:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1457:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1460:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1450:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1450:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1450:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1425:2:43"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1421:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1421:11:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1434:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1417:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1417:20:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1411:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1499:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1503:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1495:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1512:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1520:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1508:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1508:15:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1525:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1473:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1473:55:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1537:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1547:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1537:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "656:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "667:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "679:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "687:6:43",
                            "type": ""
                          }
                        ],
                        "src": "591:968:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:173:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1643:111:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1664:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1671:3:43",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1676:10:43",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1667:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1667:20:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1657:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1657:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1657:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1708:1:43",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1711:4:43",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1701:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1701:15:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1736:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1739:4:43",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1729:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1729:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1729:15:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1629:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1632:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1626:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1626:8:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1623:131:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1763:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1775:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1778:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1771:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1771:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "1763:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1595:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1598:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "1604:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1564:222:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1823:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1840:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1847:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1852:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1843:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1843:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1833:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1833:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1833:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1880:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1883:4:43",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1873:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1873:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1873:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1904:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1907:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1897:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1897:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1897:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1791:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2004:127:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2050:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2059:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2062:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2052:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2052:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2052:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2025:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2034:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2021:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2021:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2046:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2075:50:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2115:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2085:29:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2085:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2075:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1970:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1981:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1993:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1923:208:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2310:227:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2327:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2338:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2320:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2320:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2320:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2372:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2357:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2357:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2377:2:43",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2350:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2350:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2400:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2411:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2396:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2396:18:43"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2416:34:43",
                                    "type": "",
                                    "value": "ERC1967: new beacon is not a con"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2389:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2389:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2389:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2471:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2482:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2467:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2467:18:43"
                                  },
                                  {
                                    "hexValue": "7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2487:7:43",
                                    "type": "",
                                    "value": "tract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2460:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2460:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2460:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2504:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2516:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2527:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2512:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2512:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2504:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2287:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2301:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2136:401:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2716:238:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2733:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2744:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2726:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2726:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2726:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2767:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2778:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2763:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2763:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2783:2:43",
                                    "type": "",
                                    "value": "48"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2756:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2756:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2806:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2817:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2802:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2802:18:43"
                                  },
                                  {
                                    "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e2069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2822:34:43",
                                    "type": "",
                                    "value": "ERC1967: beacon implementation i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2795:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2795:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2795:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2877:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2888:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2873:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2873:18:43"
                                  },
                                  {
                                    "hexValue": "73206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2893:18:43",
                                    "type": "",
                                    "value": "s not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2866:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2866:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2866:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2921:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2933:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2944:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2929:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2929:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2921:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2693:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2707:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2542:412:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3133:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3150:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3161:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3143:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3143:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3143:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3184:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3195:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3180:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3180:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3200:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3173:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3173:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3223:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3234:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3219:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3219:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3239:34:43",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3212:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3212:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3212:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3294:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3305:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3290:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3290:18:43"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3310:8:43",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3283:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3328:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3340:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3351:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3328:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3110:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3124:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2959:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3503:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3513:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3533:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3527:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3527:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3517:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3575:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3583:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3571:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3571:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3590:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3595:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3549:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3549:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3549:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3611:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3622:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3627:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3618:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3618:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3611:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3479:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3484:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3495:3:43",
                            "type": ""
                          }
                        ],
                        "src": "3366:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3766:262:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3783:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3794:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3776:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3776:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3776:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3806:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3826:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3820:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3820:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3810:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3853:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3864:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3849:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3849:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3869:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3842:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3842:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3842:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3919:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3907:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3907:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3928:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3939:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3924:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3924:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3944:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3885:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3885:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3885:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3960:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3976:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3995:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4003:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3991:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3991:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4012:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "4008:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4008:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3987:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3987:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3972:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3972:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4019:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3968:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3968:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3735:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3746:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3757:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3645:383:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1967: new beacon is not a con\")\n        mstore(add(headStart, 96), \"tract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ERC1967: beacon implementation i\")\n        mstore(add(headStart, 96), \"s not a contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405260405161099038038061099083398101604081905261002291610493565b8181818161005160017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51610553565b6000805160206109498339815191521461006d5761006d610578565b61007982826000610084565b5050505050506105f8565b61008d8361014f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100ce5750805b1561014a57610148836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610138919061058e565b836102e060201b6100271760201c565b505b505050565b6101628161030c60201b6100531760201c565b6101c15760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610235816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610202573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610226919061058e565b61030c60201b6100531760201c565b61029a5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b8565b806102bf60008051602061094983398151915260001b61031b60201b6100621760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061030583836040518060600160405280602781526020016109696027913961031e565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103865760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b8565b600080856001600160a01b0316856040516103a191906105a9565b600060405180830381855af49150503d80600081146103dc576040519150601f19603f3d011682016040523d82523d6000602084013e6103e1565b606091505b5090925090506103f28282866103fc565b9695505050505050565b6060831561040b575081610305565b82511561041b5782518084602001fd5b8160405162461bcd60e51b81526004016101b891906105c5565b80516001600160a01b038116811461044c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048257818101518382015260200161046a565b838111156101485750506000910152565b600080604083850312156104a657600080fd5b6104af83610435565b60208401519092506001600160401b03808211156104cc57600080fd5b818501915085601f8301126104e057600080fd5b8151818111156104f2576104f2610451565b604051601f8201601f19908116603f0116810190838211818310171561051a5761051a610451565b8160405282815288602084870101111561053357600080fd5b610544836020830160208801610467565b80955050505050509250929050565b60008282101561057357634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156105a057600080fd5b61030582610435565b600082516105bb818460208701610467565b9190910192915050565b60208152600082518060208401526105e4816040850160208701610467565b601f01601f19169190910160400192915050565b610342806106076000396000f3fe60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220db3f4acd2945b6277076d808efc1a0d29032c2f6f588a6148a7709136000ed7a64736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x990 CODESIZE SUB DUP1 PUSH2 0x990 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x493 JUMP JUMPDEST DUP2 DUP2 DUP2 DUP2 PUSH2 0x51 PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x553 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x949 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x6D JUMPI PUSH2 0x6D PUSH2 0x578 JUMP JUMPDEST PUSH2 0x79 DUP3 DUP3 PUSH1 0x0 PUSH2 0x84 JUMP JUMPDEST POP POP POP POP POP POP PUSH2 0x5F8 JUMP JUMPDEST PUSH2 0x8D DUP4 PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCE JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x14A JUMPI PUSH2 0x148 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x114 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x138 SWAP2 SWAP1 PUSH2 0x58E JUMP JUMPDEST DUP4 PUSH2 0x2E0 PUSH1 0x20 SHL PUSH2 0x27 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x162 DUP2 PUSH2 0x30C PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x235 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x202 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x226 SWAP2 SWAP1 PUSH2 0x58E JUMP JUMPDEST PUSH2 0x30C PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x29A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B8 JUMP JUMPDEST DUP1 PUSH2 0x2BF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x949 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x31B PUSH1 0x20 SHL PUSH2 0x62 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x305 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x969 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x31E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x386 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x3A1 SWAP2 SWAP1 PUSH2 0x5A9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3F2 DUP3 DUP3 DUP7 PUSH2 0x3FC JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x40B JUMPI POP DUP2 PUSH2 0x305 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x41B JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B8 SWAP2 SWAP1 PUSH2 0x5C5 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x482 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x46A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x148 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AF DUP4 PUSH2 0x435 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4F2 JUMPI PUSH2 0x4F2 PUSH2 0x451 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x51A JUMPI PUSH2 0x51A PUSH2 0x451 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x544 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x467 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x573 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x305 DUP3 PUSH2 0x435 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5BB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x467 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5E4 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x467 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x607 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DB3F4A 0xCD 0x29 GASLIMIT 0xB6 0x27 PUSH17 0x76D808EFC1A0D29032C2F6F588A6148A77 MULMOD SGT PUSH1 0x0 0xED PUSH27 0x64736F6C634300080B0033A3F0AD74E5423AEBFD80D3EF43465783 CALLDATALOAD 0xA9 0xA7 0x2A 0xEA 0xEE MSIZE SELFDESTRUCT PUSH13 0xB3582B35133D50416464726573 PUSH20 0x3A206C6F772D6C6576656C2064656C6567617465 KECCAK256 PUSH4 0x616C6C20 PUSH7 0x61696C65640000 ",
              "sourceMap": "156:139:11:-:0;;;204:89;;;;;;;;;;;;;;;;;;:::i;:::-;276:6;284:4;276:6;284:4;1142:46:17;1187:1;1150:33;1142:46;:::i;:::-;-1:-1:-1;;;;;;;;;;;1118:71:17;1111:79;;;;:::i;:::-;1200:44;1224:6;1232:4;1238:5;1200:23;:44::i;:::-;1046:205;;166:84:35;;204:89:11;;156:139;;6168:343:15;6304:21;6315:9;6304:10;:21::i;:::-;6340:25;;-1:-1:-1;;;;;6340:25:15;;;;;;;;6393:1;6379:4;:11;:15;:28;;;;6398:9;6379:28;6375:130;;;6423:71;6460:9;-1:-1:-1;;;;;6452:33:15;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6489:4;6423:28;;;;;:71;;:::i;:::-;;6375:130;6168:343;;;:::o;5494:371::-;5559:29;5578:9;5559:18;;;;;:29;;:::i;:::-;5551:79;;;;-1:-1:-1;;;5551:79:15;;2338:2:43;5551:79:15;;;2320:21:43;2377:2;2357:18;;;2350:30;2416:34;2396:18;;;2389:62;-1:-1:-1;;;2467:18:43;;;2460:35;2512:19;;5551:79:15;;;;;;;;;5661:55;5688:9;-1:-1:-1;;;;;5680:33:15;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5661:18;;;;;:55;;:::i;:::-;5640:150;;;;-1:-1:-1;;;5640:150:15;;2744:2:43;5640:150:15;;;2726:21:43;2783:2;2763:18;;;2756:30;2822:34;2802:18;;;2795:62;-1:-1:-1;;;2873:18:43;;;2866:46;2929:19;;5640:150:15;2542:412:43;5640:150:15;5849:9;5800:40;-1:-1:-1;;;;;;;;;;;5827:12:15;;5800:26;;;;;:40;;:::i;:::-;:58;;-1:-1:-1;;;;;;5800:58:15;-1:-1:-1;;;;;5800:58:15;;;;;;;;;;-1:-1:-1;5494:371:15:o;6570:198:25:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:25:o;1175:320::-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1599:147:28:-;1726:4;1599:147::o;6954:387:25:-;7095:12;-1:-1:-1;;;;;1465:19:25;;;7119:69;;;;-1:-1:-1;;;7119:69:25;;3161:2:43;7119:69:25;;;3143:21:43;3200:2;3180:18;;;3173:30;3239:34;3219:18;;;3212:62;-1:-1:-1;;;3290:18:43;;;3283:36;3336:19;;7119:69:25;2959:402:43;7119:69:25;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:25;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:25;;-1:-1:-1;7199:67:25;-1:-1:-1;7283:51:25;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;14:177:43:-;93:13;;-1:-1:-1;;;;;135:31:43;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:258;400:1;410:113;424:6;421:1;418:13;410:113;;;500:11;;;494:18;481:11;;;474:39;446:2;439:10;410:113;;;541:6;538:1;535:13;532:48;;;-1:-1:-1;;576:1:43;558:16;;551:27;328:258::o;591:968::-;679:6;687;740:2;728:9;719:7;715:23;711:32;708:52;;;756:1;753;746:12;708:52;779:40;809:9;779:40;:::i;:::-;863:2;848:18;;842:25;769:50;;-1:-1:-1;;;;;;916:14:43;;;913:34;;;943:1;940;933:12;913:34;981:6;970:9;966:22;956:32;;1026:7;1019:4;1015:2;1011:13;1007:27;997:55;;1048:1;1045;1038:12;997:55;1077:2;1071:9;1099:2;1095;1092:10;1089:36;;;1105:18;;:::i;:::-;1180:2;1174:9;1148:2;1234:13;;-1:-1:-1;;1230:22:43;;;1254:2;1226:31;1222:40;1210:53;;;1278:18;;;1298:22;;;1275:46;1272:72;;;1324:18;;:::i;:::-;1364:10;1360:2;1353:22;1399:2;1391:6;1384:18;1439:7;1434:2;1429;1425;1421:11;1417:20;1414:33;1411:53;;;1460:1;1457;1450:12;1411:53;1473:55;1525:2;1520;1512:6;1508:15;1503:2;1499;1495:11;1473:55;:::i;:::-;1547:6;1537:16;;;;;;;591:968;;;;;:::o;1564:222::-;1604:4;1632:1;1629;1626:8;1623:131;;;1676:10;1671:3;1667:20;1664:1;1657:31;1711:4;1708:1;1701:15;1739:4;1736:1;1729:15;1623:131;-1:-1:-1;1771:9:43;;1564:222::o;1791:127::-;1852:10;1847:3;1843:20;1840:1;1833:31;1883:4;1880:1;1873:15;1907:4;1904:1;1897:15;1923:208;1993:6;2046:2;2034:9;2025:7;2021:23;2017:32;2014:52;;;2062:1;2059;2052:12;2014:52;2085:40;2115:9;2085:40;:::i;3366:274::-;3495:3;3533:6;3527:13;3549:53;3595:6;3590:3;3583:4;3575:6;3571:17;3549:53;:::i;:::-;3618:16;;;;;3366:274;-1:-1:-1;;3366:274:43:o;3645:383::-;3794:2;3783:9;3776:21;3757:4;3826:6;3820:13;3869:6;3864:2;3853:9;3849:18;3842:34;3885:66;3944:6;3939:2;3928:9;3924:18;3919:2;3911:6;3907:15;3885:66;:::i;:::-;4012:2;3991:15;-1:-1:-1;;3987:29:43;3972:45;;;;4019:2;3968:54;;3645:383;-1:-1:-1;;3645:383:43:o;:::-;156:139:11;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_2464": {
                  "entryPoint": null,
                  "id": 2464,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_5109": {
                  "entryPoint": null,
                  "id": 5109,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_beforeFallback_2477": {
                  "entryPoint": null,
                  "id": 2477,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_delegate_2437": {
                  "entryPoint": 254,
                  "id": 2437,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_fallback_2456": {
                  "entryPoint": 21,
                  "id": 2456,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getBeacon_2351": {
                  "entryPoint": null,
                  "id": 2351,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_implementation_2544": {
                  "entryPoint": 101,
                  "id": 2544,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3399": {
                  "entryPoint": 39,
                  "id": 3399,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3434": {
                  "entryPoint": 290,
                  "id": 3434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_3625": {
                  "entryPoint": 98,
                  "id": 3625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 83,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 516,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 573,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 662,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 690,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 614,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1643:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:43",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:43"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:8:43",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "678:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "701:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "686:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "686:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:43",
                            "type": ""
                          }
                        ],
                        "src": "309:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "769:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "779:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "788:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "783:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "848:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "873:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "878:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "869:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "869:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "892:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "897:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "888:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "888:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "882:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "882:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "862:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "862:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "862:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "812:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "806:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "820:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "822:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "831:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "822:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "802:3:43",
                                "statements": []
                              },
                              "src": "798:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "950:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "955:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "946:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "946:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "964:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "926:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "929:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "923:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "923:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "920:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "747:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "752:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "757:6:43",
                            "type": ""
                          }
                        ],
                        "src": "716:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1116:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1126:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1146:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1140:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1140:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1130:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1188:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1196:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1184:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1184:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1208:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1162:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1162:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1224:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1240:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1231:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1231:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1092:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1097:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1108:3:43",
                            "type": ""
                          }
                        ],
                        "src": "979:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:262:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1407:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1389:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1419:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1433:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1433:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1423:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1466:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1477:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1462:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1462:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1482:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1455:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1455:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1455:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1524:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1532:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1520:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1520:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1541:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1552:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1537:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1537:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1557:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1498:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1498:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1498:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1573:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1589:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1608:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1616:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1604:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1604:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1625:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1621:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1621:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1600:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1600:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1585:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1585:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1581:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1581:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1573:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1348:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1359:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1370:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1258:383:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220db3f4acd2945b6277076d808efc1a0d29032c2f6f588a6148a7709136000ed7a64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DB3F4A 0xCD 0x29 GASLIMIT 0xB6 0x27 PUSH17 0x76D808EFC1A0D29032C2F6F588A6148A77 MULMOD SGT PUSH1 0x0 0xED PUSH27 0x64736F6C634300080B003300000000000000000000000000000000 ",
              "sourceMap": "156:139:11:-:0;;;;;;;;2675:11:16;:9;:11::i;:::-;156:139:11;2322:110:16;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:25:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:25:o;1175:320::-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1599:147:28:-;1726:4;1599:147::o;1519:138:17:-;1586:7;1620:12;5043:66:15;5359:46;-1:-1:-1;;;;;5359:46:15;;5288:124;1620:12:17;-1:-1:-1;;;;;1612:36:17;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:45;;1519:138;:::o;948:895:16:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:25;7095:12;-1:-1:-1;;;;;1465:19:25;;;7119:69;;;;-1:-1:-1;;;7119:69:25;;511:2:43;7119:69:25;;;493:21:43;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:43;;;633:36;686:19;;7119:69:25;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:25;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;14:290:43:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;716:258;788:1;798:113;812:6;809:1;806:13;798:113;;;888:11;;;882:18;869:11;;;862:39;834:2;827:10;798:113;;;929:6;926:1;923:13;920:48;;;964:1;955:6;950:3;946:16;939:27;920:48;;716:258;;;:::o;979:274::-;1108:3;1146:6;1140:13;1162:53;1208:6;1203:3;1196:4;1188:6;1184:17;1162:53;:::i;:::-;1231:16;;;;;979:274;-1:-1:-1;;979:274:43:o;1258:383::-;1407:2;1396:9;1389:21;1370:4;1439:6;1433:13;1482:6;1477:2;1466:9;1462:18;1455:34;1498:66;1557:6;1552:2;1541:9;1537:18;1532:2;1524:6;1520:15;1498:66;:::i;:::-;1625:2;1604:15;-1:-1:-1;;1600:29:43;1585:45;;;;1632:2;1581:54;;1258:383;-1:-1:-1;;1258:383:43:o"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/integration/wrap/notional/nUpgradeableBeacon.sol": {
        "nUpgradeableBeacon": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "implementation_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1992": {
                  "entryPoint": null,
                  "id": 1992,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_2017": {
                  "entryPoint": null,
                  "id": 2017,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_2598": {
                  "entryPoint": null,
                  "id": 2598,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_msgSender_3478": {
                  "entryPoint": null,
                  "id": 3478,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_2644": {
                  "entryPoint": 153,
                  "id": 2644,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_2097": {
                  "entryPoint": 73,
                  "id": 2097,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@isContract_3189": {
                  "entryPoint": 324,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 339,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:726:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:241:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:43",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:43"
                                  },
                                  {
                                    "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:43",
                                    "type": "",
                                    "value": "UpgradeableBeacon: implementatio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:43"
                                  },
                                  {
                                    "hexValue": "6e206973206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:21:43",
                                    "type": "",
                                    "value": "n is not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:49:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:49:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "691:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "703:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "714:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "699:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "699:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "691:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:43",
                            "type": ""
                          }
                        ],
                        "src": "309:415:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"UpgradeableBeacon: implementatio\")\n        mstore(add(headStart, 96), \"n is not a contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161052b38038061052b83398101604081905261002f91610153565b8061003933610049565b61004281610099565b5050610183565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100ac8161014460201b61020a1760201c565b6101225760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016557600080fd5b81516001600160a01b038116811461017c57600080fd5b9392505050565b610399806101926000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102fe565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610139565b6000546001600160a01b031661007e565b61006f6100c13660046102fe565b61016f565b6000546001600160a01b031633146100f95760405162461bcd60e51b81526004016100f09061032e565b60405180910390fd5b61010281610219565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000546001600160a01b031633146101635760405162461bcd60e51b81526004016100f09061032e565b61016d60006102ae565b565b6000546001600160a01b031633146101995760405162461bcd60e51b81526004016100f09061032e565b6001600160a01b0381166101fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100f0565b610207816102ae565b50565b6001600160a01b03163b151590565b6001600160a01b0381163b61028c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084016100f0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561031057600080fd5b81356001600160a01b038116811461032757600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220f3e9667851c20f1e9ce5ad3be0f9ed68dece61a401f66fc0dc252b256c1933bd64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x52B CODESIZE SUB DUP1 PUSH2 0x52B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x153 JUMP JUMPDEST DUP1 PUSH2 0x39 CALLER PUSH2 0x49 JUMP JUMPDEST PUSH2 0x42 DUP2 PUSH2 0x99 JUMP JUMPDEST POP POP PUSH2 0x183 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAC DUP2 PUSH2 0x144 PUSH1 0x20 SHL PUSH2 0x20A OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x122 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0x192 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x139 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0x16F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x102 DUP2 PUSH2 0x219 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x163 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH2 0x16D PUSH1 0x0 PUSH2 0x2AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x199 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH2 0x207 DUP2 PUSH2 0x2AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x28C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xE9 PUSH7 0x7851C20F1E9CE5 0xAD EXTCODESIZE 0xE0 0xF9 0xED PUSH9 0xDECE61A401F66FC0DC 0x25 0x2B 0x25 PUSH13 0x1933BD64736F6C634300080B00 CALLER ",
              "sourceMap": "244:131:12:-:0;;;299:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;354:15;921:32:13;719:10:26;921:18:13;:32::i;:::-;978:35:19;997:15;978:18;:35::i;:::-;931:89;299:74:12;244:131;;2270:187:13;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:13;;;-1:-1:-1;;;;;;2378:17:13;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;1811:226:19:-;1892:37;1911:17;1892:18;;;;;:37;;:::i;:::-;1884:101;;;;-1:-1:-1;;;1884:101:19;;511:2:43;1884:101:19;;;493:21:43;550:2;530:18;;;523:30;589:34;569:18;;;562:62;660:21;640:18;;;633:49;699:19;;1884:101:19;;;;;;;;1995:15;:35;;-1:-1:-1;;;;;;1995:35:19;-1:-1:-1;;;;;1995:35:19;;;;;;;;;;1811:226::o;1175:320:25:-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;14:290:43:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:43:o;309:415::-;244:131:12;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_3478": {
                  "entryPoint": null,
                  "id": 3478,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_2644": {
                  "entryPoint": 537,
                  "id": 2644,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_2097": {
                  "entryPoint": 686,
                  "id": 2097,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@implementation_2608": {
                  "entryPoint": null,
                  "id": 2608,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 522,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_2026": {
                  "entryPoint": null,
                  "id": 2026,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_2054": {
                  "entryPoint": 313,
                  "id": 2054,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwnership_2077": {
                  "entryPoint": 367,
                  "id": 2077,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@upgradeTo_2625": {
                  "entryPoint": 198,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 766,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 814,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1698:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:216:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "254:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "263:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "266:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "256:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "256:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "256:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "224:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "239:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "244:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "235:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "235:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "248:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "231:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "231:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "220:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "220:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "210:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "210:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "203:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "203:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "200:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "279:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "289:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "279:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:286:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "406:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "416:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "428:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "439:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "424:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "424:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "416:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "458:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "473:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "489:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "494:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "485:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "498:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "481:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "481:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "469:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "469:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "451:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "451:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "451:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "375:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "386:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "397:4:43",
                            "type": ""
                          }
                        ],
                        "src": "305:203:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "687:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "704:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "697:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "697:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "697:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "749:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "734:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "734:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "754:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "727:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "727:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "727:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "777:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "788:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "773:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "773:18:43"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "793:34:43",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "766:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "766:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "766:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "837:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "849:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "860:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "845:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "845:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "837:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "664:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "678:4:43",
                            "type": ""
                          }
                        ],
                        "src": "513:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1048:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1065:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1076:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1058:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1058:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1058:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1099:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1110:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1095:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1095:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1115:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1088:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1088:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1088:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1138:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1149:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1134:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1134:18:43"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1154:34:43",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1127:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1127:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1127:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1209:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1220:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1205:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1205:18:43"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1225:8:43",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1198:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1198:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1198:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1243:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1255:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1266:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1251:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1251:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1243:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1025:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1039:4:43",
                            "type": ""
                          }
                        ],
                        "src": "874:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1455:241:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1472:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1483:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1465:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1465:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1465:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1506:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1517:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1502:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1502:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1522:2:43",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1495:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1495:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1495:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1545:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1556:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1541:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1541:18:43"
                                  },
                                  {
                                    "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1561:34:43",
                                    "type": "",
                                    "value": "UpgradeableBeacon: implementatio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1534:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1534:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1534:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1627:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1612:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1612:18:43"
                                  },
                                  {
                                    "hexValue": "6e206973206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:21:43",
                                    "type": "",
                                    "value": "n is not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1605:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1605:49:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1605:49:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1663:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1675:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1686:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1671:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1671:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1663:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1432:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1446:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1281:415:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"UpgradeableBeacon: implementatio\")\n        mstore(add(headStart, 96), \"n is not a contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102fe565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610139565b6000546001600160a01b031661007e565b61006f6100c13660046102fe565b61016f565b6000546001600160a01b031633146100f95760405162461bcd60e51b81526004016100f09061032e565b60405180910390fd5b61010281610219565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000546001600160a01b031633146101635760405162461bcd60e51b81526004016100f09061032e565b61016d60006102ae565b565b6000546001600160a01b031633146101995760405162461bcd60e51b81526004016100f09061032e565b6001600160a01b0381166101fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100f0565b610207816102ae565b50565b6001600160a01b03163b151590565b6001600160a01b0381163b61028c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084016100f0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561031057600080fd5b81356001600160a01b038116811461032757600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220f3e9667851c20f1e9ce5ad3be0f9ed68dece61a401f66fc0dc252b256c1933bd64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x139 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0x16F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x102 DUP2 PUSH2 0x219 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x163 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH2 0x16D PUSH1 0x0 PUSH2 0x2AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x199 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH2 0x207 DUP2 PUSH2 0x2AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x28C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN 0xE9 PUSH7 0x7851C20F1E9CE5 0xAD EXTCODESIZE 0xE0 0xF9 0xED PUSH9 0xDECE61A401F66FC0DC 0x25 0x2B 0x25 PUSH13 0x1933BD64736F6C634300080B00 CALLER ",
              "sourceMap": "244:131:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1469:167:19;;;;;;:::i;:::-;;:::i;:::-;;1098:112;1188:15;;-1:-1:-1;;;;;1188:15:19;1098:112;;;-1:-1:-1;;;;;469:32:43;;;451:51;;439:2;424:18;1098:112:19;;;;;;;1668:101:13;;;:::i;1036:85::-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:13;1036:85;;1918:198;;;;;;:::i;:::-;;:::i;1469:167:19:-;1082:7:13;1108:6;-1:-1:-1;;;;;1108:6:13;719:10:26;1248:23:13;1240:68;;;;-1:-1:-1;;;1240:68:13;;;;;;;:::i;:::-;;;;;;;;;1550:37:19::1;1569:17;1550:18;:37::i;:::-;1602:27;::::0;-1:-1:-1;;;;;1602:27:19;::::1;::::0;::::1;::::0;;;::::1;1469:167:::0;:::o;1668:101:13:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:13;719:10:26;1248:23:13;1240:68;;;;-1:-1:-1;;;1240:68:13;;;;;;;:::i;:::-;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;1918:198::-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:13;719:10:26;1248:23:13;1240:68;;;;-1:-1:-1;;;1240:68:13;;;;;;;:::i;:::-;-1:-1:-1;;;;;2006:22:13;::::1;1998:73;;;::::0;-1:-1:-1;;;1998:73:13;;1076:2:43;1998:73:13::1;::::0;::::1;1058:21:43::0;1115:2;1095:18;;;1088:30;1154:34;1134:18;;;1127:62;-1:-1:-1;;;1205:18:43;;;1198:36;1251:19;;1998:73:13::1;874:402:43::0;1998:73:13::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;1175:320:25:-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1811:226:19:-;-1:-1:-1;;;;;1465:19:25;;;1884:101:19;;;;-1:-1:-1;;;1884:101:19;;1483:2:43;1884:101:19;;;1465:21:43;1522:2;1502:18;;;1495:30;1561:34;1541:18;;;1534:62;-1:-1:-1;;;1612:18:43;;;1605:49;1671:19;;1884:101:19;1281:415:43;1884:101:19;1995:15;:35;;-1:-1:-1;;;;;;1995:35:19;-1:-1:-1;;;;;1995:35:19;;;;;;;;;;1811:226::o;2270:187:13:-;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:13;;;-1:-1:-1;;;;;;2378:17:13;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:286:43:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:43;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:43:o;513:356::-;715:2;697:21;;;734:18;;;727:30;793:34;788:2;773:18;;766:62;860:2;845:18;;513:356::o"
            },
            "methodIdentifiers": {
              "implementation()": "5c60da1b",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/access/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/interfaces/draft-IERC1822.sol": {
        "IERC1822Proxiable": {
          "abi": [
            {
              "inputs": [],
              "name": "proxiableUUID",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "proxiableUUID()": "52d1902d"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/proxy/ERC1967/ERC1967Upgrade.sol": {
        "ERC1967Upgrade": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/proxy/Proxy.sol": {
        "Proxy": {
          "abi": [
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol": {
        "BeaconProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setBeacon_2387": {
                  "entryPoint": 327,
                  "id": 2387,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeBeaconToAndCall_2425": {
                  "entryPoint": 124,
                  "id": 2425,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@functionDelegateCall_3399": {
                  "entryPoint": 728,
                  "id": 3399,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3434": {
                  "entryPoint": 790,
                  "id": 3434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_3625": {
                  "entryPoint": 787,
                  "id": 3625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 772,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 1012,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1069,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1414,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 1163,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1441,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1469,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 1355,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1119,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x01": {
                  "entryPoint": 1392,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 1097,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4030:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:43"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:43",
                            "type": ""
                          }
                        ],
                        "src": "14:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "228:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "245:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "252:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "257:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "248:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "248:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "238:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "238:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "285:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "288:4:43",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "278:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "309:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "302:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "196:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "381:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "391:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "400:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "395:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "460:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "490:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "481:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "481:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "504:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "509:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "500:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "500:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "494:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "494:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "474:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "474:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "474:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "421:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "424:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "418:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "418:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "432:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "434:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "446:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "439:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "439:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "434:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "414:3:43",
                                "statements": []
                              },
                              "src": "410:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "549:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "562:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "567:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "558:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "558:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "576:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "551:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "551:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "551:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "541:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "535:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "535:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "532:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "359:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "364:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "369:6:43",
                            "type": ""
                          }
                        ],
                        "src": "328:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "698:861:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "744:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "753:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "756:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "746:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "746:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "746:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "728:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "715:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "715:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "740:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "711:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "711:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "708:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "769:50:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "779:29:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "779:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "769:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "828:39:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "852:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "863:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "848:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "848:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "842:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "842:25:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "832:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "876:28:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "894:2:43",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "898:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "890:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "890:10:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "902:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "886:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "886:18:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "880:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "931:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "940:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "943:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "933:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "933:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "933:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "919:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "927:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "916:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "916:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "913:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "956:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "970:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "981:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "966:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "966:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "960:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1036:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1045:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1048:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1038:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1038:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1015:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1019:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1011:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1011:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1026:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1007:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1007:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1000:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1000:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "997:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1061:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1071:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1071:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1065:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1103:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1105:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1105:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1105:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1095:2:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1092:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1092:10:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1089:36:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1134:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1148:2:43",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1144:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1144:7:43"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1138:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1160:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1180:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1164:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1192:71:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1214:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1238:2:43"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1242:4:43",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1234:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1234:13:43"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1249:2:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1230:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1230:22:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1254:2:43",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1226:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1226:31:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1259:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1222:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1222:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1210:53:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1196:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1322:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1324:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1324:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1324:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:10:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1293:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1278:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1278:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1301:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1313:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1298:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1298:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:46:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1272:72:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1360:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1364:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1353:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1353:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1353:22:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1391:6:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1399:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1384:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1384:18:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1384:18:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1448:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1457:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1460:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1450:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1450:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1450:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1425:2:43"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1421:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1421:11:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1434:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1417:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1417:20:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1411:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1499:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1503:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1495:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1512:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1520:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1508:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1508:15:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1525:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1473:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1473:55:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1537:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1547:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1537:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "656:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "667:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "679:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "687:6:43",
                            "type": ""
                          }
                        ],
                        "src": "591:968:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:173:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1643:111:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1664:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1671:3:43",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1676:10:43",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1667:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1667:20:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1657:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1657:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1657:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1708:1:43",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1711:4:43",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1701:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1701:15:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1736:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1739:4:43",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1729:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1729:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1729:15:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1629:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1632:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1626:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1626:8:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1623:131:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1763:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1775:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1778:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1771:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1771:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "1763:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1595:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1598:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "1604:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1564:222:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1823:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1840:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1847:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1852:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1843:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1843:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1833:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1833:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1833:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1880:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1883:4:43",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1873:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1873:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1873:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1904:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1907:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1897:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1897:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1897:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1791:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2004:127:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2050:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2059:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2062:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2052:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2052:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2052:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2025:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2034:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2021:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2021:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2046:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2075:50:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2115:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2085:29:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2085:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2075:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1970:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1981:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1993:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1923:208:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2310:227:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2327:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2338:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2320:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2320:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2320:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2372:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2357:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2357:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2377:2:43",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2350:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2350:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2400:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2411:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2396:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2396:18:43"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2416:34:43",
                                    "type": "",
                                    "value": "ERC1967: new beacon is not a con"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2389:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2389:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2389:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2471:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2482:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2467:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2467:18:43"
                                  },
                                  {
                                    "hexValue": "7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2487:7:43",
                                    "type": "",
                                    "value": "tract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2460:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2460:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2460:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2504:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2516:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2527:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2512:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2512:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2504:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2287:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2301:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2136:401:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2716:238:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2733:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2744:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2726:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2726:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2726:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2767:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2778:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2763:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2763:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2783:2:43",
                                    "type": "",
                                    "value": "48"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2756:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2756:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2806:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2817:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2802:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2802:18:43"
                                  },
                                  {
                                    "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e2069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2822:34:43",
                                    "type": "",
                                    "value": "ERC1967: beacon implementation i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2795:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2795:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2795:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2877:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2888:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2873:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2873:18:43"
                                  },
                                  {
                                    "hexValue": "73206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2893:18:43",
                                    "type": "",
                                    "value": "s not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2866:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2866:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2866:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2921:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2933:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2944:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2929:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2929:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2921:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2693:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2707:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2542:412:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3133:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3150:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3161:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3143:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3143:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3143:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3184:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3195:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3180:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3180:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3200:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3173:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3173:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3223:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3234:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3219:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3219:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3239:34:43",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3212:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3212:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3212:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3294:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3305:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3290:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3290:18:43"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3310:8:43",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3283:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3328:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3340:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3351:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3328:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3110:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3124:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2959:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3503:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3513:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3533:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3527:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3527:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3517:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3575:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3583:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3571:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3571:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3590:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3595:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3549:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3549:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3549:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3611:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3622:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3627:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3618:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3618:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3611:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3479:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3484:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3495:3:43",
                            "type": ""
                          }
                        ],
                        "src": "3366:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3766:262:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3783:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3794:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3776:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3776:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3776:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3806:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3826:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3820:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3820:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3810:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3853:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3864:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3849:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3849:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3869:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3842:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3842:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3842:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3919:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3907:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3907:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3928:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3939:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3924:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3924:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3944:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3885:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3885:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3885:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3960:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3976:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3995:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4003:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3991:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3991:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4012:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "4008:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4008:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3987:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3987:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3972:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3972:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4019:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3968:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3968:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3735:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3746:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3757:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3645:383:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1967: new beacon is not a con\")\n        mstore(add(headStart, 96), \"tract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ERC1967: beacon implementation i\")\n        mstore(add(headStart, 96), \"s not a contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405260405161098a38038061098a8339810160408190526100229161048b565b61004d60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161054b565b6000805160206109438339815191521461006957610069610570565b6100758282600061007c565b50506105f0565b61008583610147565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100c65750805b1561014257610140836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101309190610586565b836102d860201b6100291760201c565b505b505050565b61015a8161030460201b6100551760201c565b6101b95760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b61022d816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021e9190610586565b61030460201b6100551760201c565b6102925760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b0565b806102b760008051602061094383398151915260001b61031360201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102fd838360405180606001604052806027815260200161096360279139610316565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b61037e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b0565b600080856001600160a01b03168560405161039991906105a1565b600060405180830381855af49150503d80600081146103d4576040519150601f19603f3d011682016040523d82523d6000602084013e6103d9565b606091505b5090925090506103ea8282866103f4565b9695505050505050565b606083156104035750816102fd565b8251156104135782518084602001fd5b8160405162461bcd60e51b81526004016101b091906105bd565b80516001600160a01b038116811461044457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561047a578181015183820152602001610462565b838111156101405750506000910152565b6000806040838503121561049e57600080fd5b6104a78361042d565b60208401519092506001600160401b03808211156104c457600080fd5b818501915085601f8301126104d857600080fd5b8151818111156104ea576104ea610449565b604051601f8201601f19908116603f0116810190838211818310171561051257610512610449565b8160405282815288602084870101111561052b57600080fd5b61053c83602083016020880161045f565b80955050505050509250929050565b60008282101561056b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561059857600080fd5b6102fd8261042d565b600082516105b381846020870161045f565b9190910192915050565b60208152600082518060208401526105dc81604085016020870161045f565b601f01601f19169190910160400192915050565b610344806105ff6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b0d61f7100889e3bf533ccd9d1ed0fa203756d20a5e89a80da27de9b9210a38664736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98A CODESIZE SUB DUP1 PUSH2 0x98A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x48B JUMP JUMPDEST PUSH2 0x4D PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x54B JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x943 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x69 JUMPI PUSH2 0x69 PUSH2 0x570 JUMP JUMPDEST PUSH2 0x75 DUP3 DUP3 PUSH1 0x0 PUSH2 0x7C JUMP JUMPDEST POP POP PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x85 DUP4 PUSH2 0x147 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xC6 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x142 JUMPI PUSH2 0x140 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x130 SWAP2 SWAP1 PUSH2 0x586 JUMP JUMPDEST DUP4 PUSH2 0x2D8 PUSH1 0x20 SHL PUSH2 0x29 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x15A DUP2 PUSH2 0x304 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22D DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21E SWAP2 SWAP1 PUSH2 0x586 JUMP JUMPDEST PUSH2 0x304 PUSH1 0x20 SHL PUSH2 0x55 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B0 JUMP JUMPDEST DUP1 PUSH2 0x2B7 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x943 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x313 PUSH1 0x20 SHL PUSH2 0x64 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2FD DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x963 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x316 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x37E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x399 SWAP2 SWAP1 PUSH2 0x5A1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3D4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3D9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3EA DUP3 DUP3 DUP7 PUSH2 0x3F4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x403 JUMPI POP DUP2 PUSH2 0x2FD JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x413 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B0 SWAP2 SWAP1 PUSH2 0x5BD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x462 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x140 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A7 DUP4 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4EA JUMPI PUSH2 0x4EA PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x512 JUMPI PUSH2 0x512 PUSH2 0x449 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x52B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53C DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x45F JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x56B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FD DUP3 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5B3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x45F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5DC DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x45F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x344 DUP1 PUSH2 0x5FF PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220B0D61F PUSH18 0x889E3BF533CCD9D1ED0FA203756D20A5E8 SWAP11 DUP1 0xDA 0x27 0xDE SWAP12 SWAP3 LT LOG3 DUP7 PUSH5 0x736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER LOG3 CREATE 0xAD PUSH21 0xE5423AEBFD80D3EF4346578335A9A72AEAEE59FF6C 0xB3 PC 0x2B CALLDATALOAD SGT RETURNDATASIZE POP COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65640000 ",
              "sourceMap": "564:1606:17:-:0;;;1046:205;;;;;;;;;;;;;;;;;;:::i;:::-;1142:46;1187:1;1150:33;1142:46;:::i;:::-;-1:-1:-1;;;;;;;;;;;1118:71:17;1111:79;;;;:::i;:::-;1200:44;1224:6;1232:4;1238:5;1200:23;:44::i;:::-;1046:205;;564:1606;;6168:343:15;6304:21;6315:9;6304:10;:21::i;:::-;6340:25;;-1:-1:-1;;;;;6340:25:15;;;;;;;;6393:1;6379:4;:11;:15;:28;;;;6398:9;6379:28;6375:130;;;6423:71;6460:9;-1:-1:-1;;;;;6452:33:15;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6489:4;6423:28;;;;;:71;;:::i;:::-;;6375:130;6168:343;;;:::o;5494:371::-;5559:29;5578:9;5559:18;;;;;:29;;:::i;:::-;5551:79;;;;-1:-1:-1;;;5551:79:15;;2338:2:43;5551:79:15;;;2320:21:43;2377:2;2357:18;;;2350:30;2416:34;2396:18;;;2389:62;-1:-1:-1;;;2467:18:43;;;2460:35;2512:19;;5551:79:15;;;;;;;;;5661:55;5688:9;-1:-1:-1;;;;;5680:33:15;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5661:18;;;;;:55;;:::i;:::-;5640:150;;;;-1:-1:-1;;;5640:150:15;;2744:2:43;5640:150:15;;;2726:21:43;2783:2;2763:18;;;2756:30;2822:34;2802:18;;;2795:62;-1:-1:-1;;;2873:18:43;;;2866:46;2929:19;;5640:150:15;2542:412:43;5640:150:15;5849:9;5800:40;-1:-1:-1;;;;;;;;;;;5827:12:15;;5800:26;;;;;:40;;:::i;:::-;:58;;-1:-1:-1;;;;;;5800:58:15;-1:-1:-1;;;;;5800:58:15;;;;;;;;;;-1:-1:-1;5494:371:15:o;6570:198:25:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:25:o;1175:320::-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1599:147:28:-;1726:4;1599:147::o;6954:387:25:-;7095:12;-1:-1:-1;;;;;1465:19:25;;;7119:69;;;;-1:-1:-1;;;7119:69:25;;3161:2:43;7119:69:25;;;3143:21:43;3200:2;3180:18;;;3173:30;3239:34;3219:18;;;3212:62;-1:-1:-1;;;3290:18:43;;;3283:36;3336:19;;7119:69:25;2959:402:43;7119:69:25;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:25;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:25;;-1:-1:-1;7199:67:25;-1:-1:-1;7283:51:25;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;14:177:43:-;93:13;;-1:-1:-1;;;;;135:31:43;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:258;400:1;410:113;424:6;421:1;418:13;410:113;;;500:11;;;494:18;481:11;;;474:39;446:2;439:10;410:113;;;541:6;538:1;535:13;532:48;;;-1:-1:-1;;576:1:43;558:16;;551:27;328:258::o;591:968::-;679:6;687;740:2;728:9;719:7;715:23;711:32;708:52;;;756:1;753;746:12;708:52;779:40;809:9;779:40;:::i;:::-;863:2;848:18;;842:25;769:50;;-1:-1:-1;;;;;;916:14:43;;;913:34;;;943:1;940;933:12;913:34;981:6;970:9;966:22;956:32;;1026:7;1019:4;1015:2;1011:13;1007:27;997:55;;1048:1;1045;1038:12;997:55;1077:2;1071:9;1099:2;1095;1092:10;1089:36;;;1105:18;;:::i;:::-;1180:2;1174:9;1148:2;1234:13;;-1:-1:-1;;1230:22:43;;;1254:2;1226:31;1222:40;1210:53;;;1278:18;;;1298:22;;;1275:46;1272:72;;;1324:18;;:::i;:::-;1364:10;1360:2;1353:22;1399:2;1391:6;1384:18;1439:7;1434:2;1429;1425;1421:11;1417:20;1414:33;1411:53;;;1460:1;1457;1450:12;1411:53;1473:55;1525:2;1520;1512:6;1508:15;1503:2;1499;1495:11;1473:55;:::i;:::-;1547:6;1537:16;;;;;;;591:968;;;;;:::o;1564:222::-;1604:4;1632:1;1629;1626:8;1623:131;;;1676:10;1671:3;1667:20;1664:1;1657:31;1711:4;1708:1;1701:15;1739:4;1736:1;1729:15;1623:131;-1:-1:-1;1771:9:43;;1564:222::o;1791:127::-;1852:10;1847:3;1843:20;1840:1;1833:31;1883:4;1880:1;1873:15;1907:4;1904:1;1897:15;1923:208;1993:6;2046:2;2034:9;2025:7;2021:23;2017:32;2014:52;;;2062:1;2059;2052:12;2014:52;2085:40;2115:9;2085:40;:::i;3366:274::-;3495:3;3533:6;3527:13;3549:53;3595:6;3590:3;3583:4;3575:6;3571:17;3549:53;:::i;:::-;3618:16;;;;;3366:274;-1:-1:-1;;3366:274:43:o;3645:383::-;3794:2;3783:9;3776:21;3757:4;3826:6;3820:13;3869:6;3864:2;3853:9;3849:18;3842:34;3885:66;3944:6;3939:2;3928:9;3924:18;3919:2;3911:6;3907:15;3885:66;:::i;:::-;4012:2;3991:15;-1:-1:-1;;3987:29:43;3972:45;;;;4019:2;3968:54;;3645:383;-1:-1:-1;;3645:383:43:o;:::-;564:1606:17;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_2464": {
                  "entryPoint": null,
                  "id": 2464,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_2472": {
                  "entryPoint": null,
                  "id": 2472,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_beforeFallback_2477": {
                  "entryPoint": null,
                  "id": 2477,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_delegate_2437": {
                  "entryPoint": 256,
                  "id": 2437,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_fallback_2456": {
                  "entryPoint": 23,
                  "id": 2456,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getBeacon_2351": {
                  "entryPoint": null,
                  "id": 2351,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_implementation_2544": {
                  "entryPoint": 103,
                  "id": 2544,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3399": {
                  "entryPoint": 41,
                  "id": 3399,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3434": {
                  "entryPoint": 292,
                  "id": 3434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_3625": {
                  "entryPoint": 100,
                  "id": 3625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 85,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 518,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 575,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 664,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 692,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 616,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1643:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:43",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:43"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:8:43",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "678:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "701:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "686:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "686:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:43",
                            "type": ""
                          }
                        ],
                        "src": "309:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "769:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "779:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "788:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "783:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "848:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "873:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "878:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "869:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "869:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "892:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "897:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "888:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "888:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "882:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "882:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "862:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "862:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "862:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "812:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "806:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "820:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "822:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "831:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "822:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "802:3:43",
                                "statements": []
                              },
                              "src": "798:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "950:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "955:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "946:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "946:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "964:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "926:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "929:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "923:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "923:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "920:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "747:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "752:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "757:6:43",
                            "type": ""
                          }
                        ],
                        "src": "716:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1116:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1126:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1146:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1140:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1140:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1130:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1188:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1196:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1184:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1184:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1208:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1162:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1162:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1224:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1240:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1231:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1231:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1092:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1097:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1108:3:43",
                            "type": ""
                          }
                        ],
                        "src": "979:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:262:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1407:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1389:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1419:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1433:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1433:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1423:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1466:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1477:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1462:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1462:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1482:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1455:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1455:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1455:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1524:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1532:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1520:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1520:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1541:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1552:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1537:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1537:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1557:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1498:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1498:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1498:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1573:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1589:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1608:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1616:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1604:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1604:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1625:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1621:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1621:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1600:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1600:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1585:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1585:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1581:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1581:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1573:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1348:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1359:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1370:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1258:383:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b0d61f7100889e3bf533ccd9d1ed0fa203756d20a5e89a80da27de9b9210a38664736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0x13 JUMPI PUSH2 0x11 PUSH2 0x17 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11 JUMPDEST PUSH2 0x27 PUSH2 0x22 PUSH2 0x67 JUMP JUMPDEST PUSH2 0x100 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E8 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x124 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9A PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x23F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0x298 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FC DUP3 DUP3 DUP7 PUSH2 0x206 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x215 JUMPI POP DUP2 PUSH2 0x4E JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x225 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x283 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2AA DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D3 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220B0D61F PUSH18 0x889E3BF533CCD9D1ED0FA203756D20A5E8 SWAP11 DUP1 0xDA 0x27 0xDE SWAP12 SWAP3 LT LOG3 DUP7 PUSH5 0x736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "564:1606:17:-:0;;;;;;2898:11:16;:9;:11::i;:::-;564:1606:17;;2675:11:16;2322:110;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:25:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:25:o;1175:320::-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1599:147:28:-;1726:4;1599:147::o;1519:138:17:-;1586:7;1620:12;5043:66:15;5359:46;-1:-1:-1;;;;;5359:46:15;;5288:124;1620:12:17;-1:-1:-1;;;;;1612:36:17;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:45;;1519:138;:::o;948:895:16:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:25;7095:12;-1:-1:-1;;;;;1465:19:25;;;7119:69;;;;-1:-1:-1;;;7119:69:25;;511:2:43;7119:69:25;;;493:21:43;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:43;;;633:36;686:19;;7119:69:25;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:25;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;14:290:43:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;716:258;788:1;798:113;812:6;809:1;806:13;798:113;;;888:11;;;882:18;869:11;;;862:39;834:2;827:10;798:113;;;929:6;926:1;923:13;920:48;;;964:1;955:6;950:3;946:16;939:27;920:48;;716:258;;;:::o;979:274::-;1108:3;1146:6;1140:13;1162:53;1208:6;1203:3;1196:4;1188:6;1184:17;1162:53;:::i;:::-;1231:16;;;;;979:274;-1:-1:-1;;979:274:43:o;1258:383::-;1407:2;1396:9;1389:21;1370:4;1439:6;1433:13;1482:6;1477:2;1466:9;1462:18;1455:34;1498:66;1557:6;1552:2;1541:9;1537:18;1532:2;1524:6;1520:15;1498:66;:::i;:::-;1625:2;1604:15;-1:-1:-1;;1600:29:43;1585:45;;;;1632:2;1581:54;;1258:383;-1:-1:-1;;1258:383:43:o"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol": {
        "IBeacon": {
          "abi": [
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "implementation()": "5c60da1b"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol": {
        "UpgradeableBeacon": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "implementation_",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "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": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2017": {
                  "entryPoint": null,
                  "id": 2017,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_2598": {
                  "entryPoint": null,
                  "id": 2598,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_msgSender_3478": {
                  "entryPoint": null,
                  "id": 3478,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_2644": {
                  "entryPoint": 151,
                  "id": 2644,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_2097": {
                  "entryPoint": 71,
                  "id": 2097,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@isContract_3189": {
                  "entryPoint": 322,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 337,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:726:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:241:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:43",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:43"
                                  },
                                  {
                                    "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:43",
                                    "type": "",
                                    "value": "UpgradeableBeacon: implementatio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:43"
                                  },
                                  {
                                    "hexValue": "6e206973206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:21:43",
                                    "type": "",
                                    "value": "n is not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:49:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:49:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "691:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "703:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "714:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "699:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "699:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "691:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:43",
                            "type": ""
                          }
                        ],
                        "src": "309:415:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"UpgradeableBeacon: implementatio\")\n        mstore(add(headStart, 96), \"n is not a contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161052938038061052983398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b61020a1760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610399806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102fe565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610139565b6000546001600160a01b031661007e565b61006f6100c13660046102fe565b61016f565b6000546001600160a01b031633146100f95760405162461bcd60e51b81526004016100f09061032e565b60405180910390fd5b61010281610219565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000546001600160a01b031633146101635760405162461bcd60e51b81526004016100f09061032e565b61016d60006102ae565b565b6000546001600160a01b031633146101995760405162461bcd60e51b81526004016100f09061032e565b6001600160a01b0381166101fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100f0565b610207816102ae565b50565b6001600160a01b03163b151590565b6001600160a01b0381163b61028c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084016100f0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561031057600080fd5b81356001600160a01b038116811461032757600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220f46539165aa1b569c307000a419a433d9a6912936d77c29c1974c2ce0bfb0e6564736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x529 CODESIZE SUB DUP1 PUSH2 0x529 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x151 JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x47 JUMP JUMPDEST PUSH2 0x41 DUP2 PUSH2 0x97 JUMP JUMPDEST POP PUSH2 0x181 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xAA DUP2 PUSH2 0x142 PUSH1 0x20 SHL PUSH2 0x20A OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x120 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E206973206E6F74206120636F6E747261637400000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x399 DUP1 PUSH2 0x190 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x139 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0x16F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x102 DUP2 PUSH2 0x219 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x163 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH2 0x16D PUSH1 0x0 PUSH2 0x2AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x199 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH2 0x207 DUP2 PUSH2 0x2AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x28C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL PUSH6 0x39165AA1B569 0xC3 SMOD STOP EXP COINBASE SWAP11 NUMBER RETURNDATASIZE SWAP11 PUSH10 0x12936D77C29C1974C2CE SIGNEXTEND 0xFB 0xE PUSH6 0x64736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "543:1496:19:-:0;;;931:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;921:32:13;719:10:26;921:18:13;:32::i;:::-;978:35:19;997:15;978:18;:35::i;:::-;931:89;543:1496;;2270:187:13;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:13;;;-1:-1:-1;;;;;;2378:17:13;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;1811:226:19:-;1892:37;1911:17;1892:18;;;;;:37;;:::i;:::-;1884:101;;;;-1:-1:-1;;;1884:101:19;;511:2:43;1884:101:19;;;493:21:43;550:2;530:18;;;523:30;589:34;569:18;;;562:62;660:21;640:18;;;633:49;699:19;;1884:101:19;;;;;;;;1995:15;:35;;-1:-1:-1;;;;;;1995:35:19;-1:-1:-1;;;;;1995:35:19;;;;;;;;;;1811:226::o;1175:320:25:-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;14:290:43:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:43:o;309:415::-;543:1496:19;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_msgSender_3478": {
                  "entryPoint": null,
                  "id": 3478,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_setImplementation_2644": {
                  "entryPoint": 537,
                  "id": 2644,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transferOwnership_2097": {
                  "entryPoint": 686,
                  "id": 2097,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@implementation_2608": {
                  "entryPoint": null,
                  "id": 2608,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 522,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@owner_2026": {
                  "entryPoint": null,
                  "id": 2026,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@renounceOwnership_2054": {
                  "entryPoint": 313,
                  "id": 2054,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwnership_2077": {
                  "entryPoint": 367,
                  "id": 2077,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@upgradeTo_2625": {
                  "entryPoint": 198,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 766,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 814,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1698:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:216:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "254:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "263:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "266:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "256:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "256:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "256:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "213:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "224:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "239:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "244:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "235:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "235:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "248:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "231:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "231:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "220:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "220:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "210:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "210:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "203:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "203:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "200:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "279:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "289:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "279:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:286:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "406:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "416:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "428:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "439:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "424:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "424:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "416:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "458:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "473:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "489:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "494:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "485:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "498:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "481:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "481:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "469:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "469:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "451:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "451:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "451:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "375:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "386:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "397:4:43",
                            "type": ""
                          }
                        ],
                        "src": "305:203:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "687:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "704:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "715:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "697:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "697:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "697:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "749:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "734:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "734:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "754:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "727:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "727:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "727:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "777:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "788:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "773:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "773:18:43"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "793:34:43",
                                    "type": "",
                                    "value": "Ownable: caller is not the owner"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "766:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "766:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "766:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "837:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "849:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "860:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "845:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "845:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "837:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "664:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "678:4:43",
                            "type": ""
                          }
                        ],
                        "src": "513:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1048:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1065:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1076:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1058:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1058:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1058:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1099:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1110:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1095:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1095:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1115:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1088:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1088:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1088:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1138:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1149:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1134:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1134:18:43"
                                  },
                                  {
                                    "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1154:34:43",
                                    "type": "",
                                    "value": "Ownable: new owner is the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1127:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1127:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1127:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1209:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1220:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1205:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1205:18:43"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1225:8:43",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1198:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1198:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1198:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1243:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1255:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1266:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1251:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1251:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1243:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1025:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1039:4:43",
                            "type": ""
                          }
                        ],
                        "src": "874:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1455:241:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1472:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1483:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1465:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1465:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1465:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1506:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1517:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1502:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1502:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1522:2:43",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1495:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1495:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1495:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1545:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1556:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1541:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1541:18:43"
                                  },
                                  {
                                    "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1561:34:43",
                                    "type": "",
                                    "value": "UpgradeableBeacon: implementatio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1534:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1534:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1534:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1627:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1612:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1612:18:43"
                                  },
                                  {
                                    "hexValue": "6e206973206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:21:43",
                                    "type": "",
                                    "value": "n is not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1605:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1605:49:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1605:49:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1663:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1675:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1686:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1671:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1671:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1663:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1432:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1446:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1281:415:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"UpgradeableBeacon: implementatio\")\n        mstore(add(headStart, 96), \"n is not a contract\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102fe565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610139565b6000546001600160a01b031661007e565b61006f6100c13660046102fe565b61016f565b6000546001600160a01b031633146100f95760405162461bcd60e51b81526004016100f09061032e565b60405180910390fd5b61010281610219565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000546001600160a01b031633146101635760405162461bcd60e51b81526004016100f09061032e565b61016d60006102ae565b565b6000546001600160a01b031633146101995760405162461bcd60e51b81526004016100f09061032e565b6001600160a01b0381166101fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100f0565b610207816102ae565b50565b6001600160a01b03163b151590565b6001600160a01b0381163b61028c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084016100f0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561031057600080fd5b81356001600160a01b038116811461032757600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220f46539165aa1b569c307000a419a433d9a6912936d77c29c1974c2ce0bfb0e6564736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x71 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xB3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x6A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F PUSH2 0x139 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E JUMP JUMPDEST PUSH2 0x6F PUSH2 0xC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0x16F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x102 DUP2 PUSH2 0x219 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x163 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH2 0x16D PUSH1 0x0 PUSH2 0x2AE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x199 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0 SWAP1 PUSH2 0x32E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH2 0x207 DUP2 PUSH2 0x2AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x28C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5570677261646561626C65426561636F6E3A20696D706C656D656E746174696F PUSH1 0x44 DUP3 ADD MSTORE PUSH19 0x1B881A5CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x6A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL PUSH6 0x39165AA1B569 0xC3 SMOD STOP EXP COINBASE SWAP11 NUMBER RETURNDATASIZE SWAP11 PUSH10 0x12936D77C29C1974C2CE SIGNEXTEND 0xFB 0xE PUSH6 0x64736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "543:1496:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1469:167;;;;;;:::i;:::-;;:::i;:::-;;1098:112;1188:15;;-1:-1:-1;;;;;1188:15:19;1098:112;;;-1:-1:-1;;;;;469:32:43;;;451:51;;439:2;424:18;1098:112:19;;;;;;;1668:101:13;;;:::i;1036:85::-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:13;1036:85;;1918:198;;;;;;:::i;:::-;;:::i;1469:167:19:-;1082:7:13;1108:6;-1:-1:-1;;;;;1108:6:13;719:10:26;1248:23:13;1240:68;;;;-1:-1:-1;;;1240:68:13;;;;;;;:::i;:::-;;;;;;;;;1550:37:19::1;1569:17;1550:18;:37::i;:::-;1602:27;::::0;-1:-1:-1;;;;;1602:27:19;::::1;::::0;::::1;::::0;;;::::1;1469:167:::0;:::o;1668:101:13:-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:13;719:10:26;1248:23:13;1240:68;;;;-1:-1:-1;;;1240:68:13;;;;;;;:::i;:::-;1732:30:::1;1759:1;1732:18;:30::i;:::-;1668:101::o:0;1918:198::-;1082:7;1108:6;-1:-1:-1;;;;;1108:6:13;719:10:26;1248:23:13;1240:68;;;;-1:-1:-1;;;1240:68:13;;;;;;;:::i;:::-;-1:-1:-1;;;;;2006:22:13;::::1;1998:73;;;::::0;-1:-1:-1;;;1998:73:13;;1076:2:43;1998:73:13::1;::::0;::::1;1058:21:43::0;1115:2;1095:18;;;1088:30;1154:34;1134:18;;;1127:62;-1:-1:-1;;;1205:18:43;;;1198:36;1251:19;;1998:73:13::1;874:402:43::0;1998:73:13::1;2081:28;2100:8;2081:18;:28::i;:::-;1918:198:::0;:::o;1175:320:25:-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1811:226:19:-;-1:-1:-1;;;;;1465:19:25;;;1884:101:19;;;;-1:-1:-1;;;1884:101:19;;1483:2:43;1884:101:19;;;1465:21:43;1522:2;1502:18;;;1495:30;1561:34;1541:18;;;1534:62;-1:-1:-1;;;1612:18:43;;;1605:49;1671:19;;1884:101:19;1281:415:43;1884:101:19;1995:15;:35;;-1:-1:-1;;;;;;1995:35:19;-1:-1:-1;;;;;1995:35:19;;;;;;;;;;1811:226::o;2270:187:13:-;2343:16;2362:6;;-1:-1:-1;;;;;2378:17:13;;;-1:-1:-1;;;;;;2378:17:13;;;;;;2410:40;;2362:6;;;;;;;2410:40;;2343:16;2410:40;2333:124;2270:187;:::o;14:286:43:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:43;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:43:o;513:356::-;715:2;697:21;;;734:18;;;727:30;793:34;788:2;773:18;;766:62;860:2;845:18;;513:356::o"
            },
            "methodIdentifiers": {
              "implementation()": "5c60da1b",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b",
              "upgradeTo(address)": "3659cfe6"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/security/ReentrancyGuard.sol": {
        "ReentrancyGuard": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/token/ERC20/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol": {
        "IERC20Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol": {
        "SafeERC20": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122026fcc4b97c06b210bc3a9cbec4d3703b4519f1fea0b9a7382c1ec692150d1b2964736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xFC 0xC4 0xB9 PUSH29 0x6B210BC3A9CBEC4D3703B4519F1FEA0B9A7382C1EC692150D1B296473 PUSH16 0x6C634300080B00330000000000000000 ",
              "sourceMap": "645:3270:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;645:3270:23;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122026fcc4b97c06b210bc3a9cbec4d3703b4519f1fea0b9a7382c1ec692150d1b2964736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0xFC 0xC4 0xB9 PUSH29 0x6B210BC3A9CBEC4D3703B4519F1FEA0B9A7382C1EC692150D1B296473 PUSH16 0x6C634300080B00330000000000000000 ",
              "sourceMap": "645:3270:23:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/token/ERC777/IERC777.sol": {
        "IERC777": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "defaultOperators()": "06e48538",
              "granularity()": "556f0dc7",
              "isOperatorFor(address,address)": "d95b6371",
              "name()": "06fdde03",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd"
            }
          }
        }
      },
      "openzeppelin-contracts-V4/utils/Address.sol": {
        "Address": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae66c815c8b9e1c45f384feb46a4dbdb9c398526189170c014f4b9e2933491d064736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE PUSH7 0xC815C8B9E1C45F CODESIZE 0x4F 0xEB CHAINID LOG4 0xDB 0xDB SWAP13 CODECOPY DUP6 0x26 XOR SWAP2 PUSH17 0xC014F4B9E2933491D064736F6C63430008 SIGNEXTEND STOP CALLER ",
              "sourceMap": "194:8061:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8061:25;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae66c815c8b9e1c45f384feb46a4dbdb9c398526189170c014f4b9e2933491d064736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE PUSH7 0xC815C8B9E1C45F CODESIZE 0x4F 0xEB CHAINID LOG4 0xDB 0xDB SWAP13 CODECOPY DUP6 0x26 XOR SWAP2 PUSH17 0xC014F4B9E2933491D064736F6C63430008 SIGNEXTEND STOP CALLER ",
              "sourceMap": "194:8061:25:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/utils/Context.sol": {
        "Context": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/utils/Create2.sol": {
        "Create2": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122077fdf35b9eaee4a5015efc5311fa40c40b98034f977c67b48fbe5ad380998fd264736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xFDF35B9EAEE4A5015EFC5311FA40C40B98034F977C67B48F 0xBE GAS 0xD3 DUP1 SWAP10 DUP16 0xD2 PUSH5 0x736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "479:2003:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;479:2003:27;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122077fdf35b9eaee4a5015efc5311fa40c40b98034f977c67b48fbe5ad380998fd264736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0xFDF35B9EAEE4A5015EFC5311FA40C40B98034F977C67B48F 0xBE GAS 0xD3 DUP1 SWAP10 DUP16 0xD2 PUSH5 0x736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "479:2003:27:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/utils/StorageSlot.sol": {
        "StorageSlot": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ccc55c7ee084149a252be7420c8bc670c0f2558b735fc43162dd4f2bee3d37eb64736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0xC5 0x5C PUSH31 0xE084149A252BE7420C8BC670C0F2558B735FC43162DD4F2BEE3D37EB64736F PUSH13 0x634300080B0033000000000000 ",
              "sourceMap": "1264:1219:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1264:1219:28;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ccc55c7ee084149a252be7420c8bc670c0f2558b735fc43162dd4f2bee3d37eb64736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0xC5 0x5C PUSH31 0xE084149A252BE7420C8BC670C0F2558B735FC43162DD4F2BEE3D37EB64736F PUSH13 0x634300080B0033000000000000 ",
              "sourceMap": "1264:1219:28:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "openzeppelin-contracts-V4/utils/Strings.sol": {
        "Strings": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e8b0de8eb84022651aa7997dafb507e23e3c14cdf3a0cc157b7aaf3633ff0dd64736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E DUP12 0xD 0xE8 0xEB DUP5 MUL 0x26 MLOAD 0xAA PUSH26 0x97DAFB507E23E3C14CDF3A0CC157B7AAF3633FF0DD64736F6C63 NUMBER STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "146:1885:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;146:1885:29;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202e8b0de8eb84022651aa7997dafb507e23e3c14cdf3a0cc157b7aaf3633ff0dd64736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E DUP12 0xD 0xE8 0xEB DUP5 MUL 0x26 MLOAD 0xAA PUSH26 0x97DAFB507E23E3C14CDF3A0CC157B7AAF3633FF0DD64736F6C63 NUMBER STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "146:1885:29:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "wrapped-fcash/contracts/lib/Constants.sol": {
        "Constants": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203727ae20c17df42fe2a5806c0abafe55c502a356e7244a7ddeb60569e1e61b3664736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY 0x27 0xAE KECCAK256 0xC1 PUSH30 0xF42FE2A5806C0ABAFE55C502A356E7244A7DDEB60569E1E61B3664736F6C PUSH4 0x4300080B STOP CALLER ",
              "sourceMap": "138:1927:30:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;138:1927:30;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203727ae20c17df42fe2a5806c0abafe55c502a356e7244a7ddeb60569e1e61b3664736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY 0x27 0xAE KECCAK256 0xC1 PUSH30 0xF42FE2A5806C0ABAFE55C502A356E7244A7DDEB60569E1E61B3664736F6C PUSH4 0x4300080B STOP CALLER ",
              "sourceMap": "138:1927:30:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "wrapped-fcash/contracts/lib/DateTime.sol": {
        "DateTime": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122060597b02014eb9dc220f6a618922cc47be7f30043c09bc8340070434074f322e64736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x59 PUSH28 0x2014EB9DC220F6A618922CC47BE7F30043C09BC8340070434074F32 0x2E PUSH5 0x736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "104:5805:31:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;104:5805:31;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122060597b02014eb9dc220f6a618922cc47be7f30043c09bc8340070434074f322e64736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x59 PUSH28 0x2014EB9DC220F6A618922CC47BE7F30043C09BC8340070434074F32 0x2E PUSH5 0x736F6C6343 STOP ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "104:5805:31:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "wrapped-fcash/contracts/lib/EncodeDecode.sol": {
        "EncodeDecode": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202b5ba7d3fbd744d35d5fece6e64a32af4cb70bccdf7fb8e2920c31a849454c9a64736f6c634300080b0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B JUMPDEST 0xA7 0xD3 0xFB 0xD7 DIFFICULTY 0xD3 0x5D 0x5F 0xEC 0xE6 0xE6 0x4A ORIGIN 0xAF 0x4C 0xB7 SIGNEXTEND 0xCC 0xDF PUSH32 0xB8E2920C31A849454C9A64736F6C634300080B00330000000000000000000000 ",
              "sourceMap": "106:3275:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;106:3275:32;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202b5ba7d3fbd744d35d5fece6e64a32af4cb70bccdf7fb8e2920c31a849454c9a64736f6c634300080b0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B JUMPDEST 0xA7 0xD3 0xFB 0xD7 DIFFICULTY 0xD3 0x5D 0x5F 0xEC 0xE6 0xE6 0x4A ORIGIN 0xAF 0x4C 0xB7 SIGNEXTEND 0xCC 0xDF PUSH32 0xB8E2920C31A849454C9A64736F6C634300080B00330000000000000000000000 ",
              "sourceMap": "106:3275:32:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol": {
        "WrappedfCashFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_beacon",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "indexed": false,
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "wrapper",
                  "type": "address"
                }
              ],
              "name": "WrapperDeployed",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "BEACON",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "SALT",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "computeAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "deployWrapper",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_4987": {
                  "entryPoint": null,
                  "id": 4987,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 64,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051610f50380380610f5083398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610ebf61009160003960008181609101526102810152610ebf6000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063422a73a4146200005757806349493a4d146200008b57806395fd976514620000b3578063ba9a91a514620000ca575b600080fd5b6200006e6200006836600462000406565b620000e2565b6040516001600160a01b0390911681526020015b60405180910390f35b6200006e7f000000000000000000000000000000000000000000000000000000000000000081565b6200006e620000c436600462000406565b6200018c565b620000d3600081565b60405190815260200162000082565b600080620000f184846200018c565b90506001600160a01b0381163b156200010c57905062000186565b600062000126818062000120888862000205565b620002e4565b6040805161ffff8816815264ffffffffff871660208201526001600160a01b0383168183015290519192507fc83ad9c9cf773a3378ccc5ce465c8524049645b2639a8c81816a45812c2b2459919081900360600190a19150620001869050565b92915050565b6000620001fe816200019f858562000205565b80519060200120604080516001600160f81b03196020808301919091523060601b6bffffffffffffffffffffffff1916602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b60405161ffff8316602482015264ffffffffff8216604482015260609060009060640160408051601f19818403018152918152602080830180516001600160e01b031663054ae0e360e21b179052905191925062000265908201620003f8565b601f1982820381018352601f909101166040819052620002ac907f000000000000000000000000000000000000000000000000000000000000000090849060200162000486565b60408051601f1981840301815290829052620002cc9291602001620004ca565b60405160208183030381529060405291505092915050565b600080844710156200033d5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b82516200038d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000334565b8383516020850187f590506001600160a01b038116620003f05760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640162000334565b949350505050565b61098c80620004fe83390190565b600080604083850312156200041a57600080fd5b823561ffff811681146200042d57600080fd5b9150602083013564ffffffffff811681146200044857600080fd5b809150509250929050565b60005b838110156200047057818101518382015260200162000456565b8381111562000480576000848401525b50505050565b60018060a01b03831681526040602082015260008251806040840152620004b581606085016020870162000453565b601f01601f1916919091016060019392505050565b60008351620004de81846020880162000453565b835190830190620004f481836020880162000453565b0194935050505056fe608060405260405161098c38038061098c8339810160408190526100229161048f565b818161004f60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161054f565b6000805160206109458339815191521461006b5761006b610574565b61007782826000610080565b505050506105f4565b6100898361014b565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100ca5750805b1561014657610144836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610134919061058a565b836102dc60201b6100271760201c565b505b505050565b61015e8161030860201b6100531760201c565b6101bd5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610231816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610222919061058a565b61030860201b6100531760201c565b6102965760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b4565b806102bb60008051602061094583398151915260001b61031760201b6100621760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061030183836040518060600160405280602781526020016109656027913961031a565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b4565b600080856001600160a01b03168560405161039d91906105a5565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5090925090506103ee8282866103f8565b9695505050505050565b60608315610407575081610301565b8251156104175782518084602001fd5b8160405162461bcd60e51b81526004016101b491906105c1565b80516001600160a01b038116811461044857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561047e578181015183820152602001610466565b838111156101445750506000910152565b600080604083850312156104a257600080fd5b6104ab83610431565b60208401519092506001600160401b03808211156104c857600080fd5b818501915085601f8301126104dc57600080fd5b8151818111156104ee576104ee61044d565b604051601f8201601f19908116603f011681019083821181831017156105165761051661044d565b8160405282815288602084870101111561052f57600080fd5b610540836020830160208801610463565b80955050505050509250929050565b60008282101561056f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561059c57600080fd5b61030182610431565b600082516105b7818460208701610463565b9190910192915050565b60208152600082518060208401526105e0816040850160208701610463565b601f01601f19169190910160400192915050565b610342806106036000396000f3fe60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df584e06121e7575b78856bfb9100e501991c5a1d3346e026d24f463feb20c6364736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220812f80be9d4307a01e05f0bd1ec12a76fb1bfd80548351e5ba75c8675b8d881f64736f6c634300080b0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF50 CODESIZE SUB DUP1 PUSH2 0xF50 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x70 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xEBF PUSH2 0x91 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH1 0x91 ADD MSTORE PUSH2 0x281 ADD MSTORE PUSH2 0xEBF PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x52 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x422A73A4 EQ PUSH3 0x57 JUMPI DUP1 PUSH4 0x49493A4D EQ PUSH3 0x8B JUMPI DUP1 PUSH4 0x95FD9765 EQ PUSH3 0xB3 JUMPI DUP1 PUSH4 0xBA9A91A5 EQ PUSH3 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6E PUSH3 0x68 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0xE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6E PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x6E PUSH3 0xC4 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0x18C JUMP JUMPDEST PUSH3 0xD3 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xF1 DUP5 DUP5 PUSH3 0x18C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH3 0x10C JUMPI SWAP1 POP PUSH3 0x186 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x126 DUP2 DUP1 PUSH3 0x120 DUP9 DUP9 PUSH3 0x205 JUMP JUMPDEST PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP9 AND DUP2 MSTORE PUSH5 0xFFFFFFFFFF DUP8 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xC83AD9C9CF773A3378CCC5CE465C8524049645B2639A8C81816A45812C2B2459 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 SWAP2 POP PUSH3 0x186 SWAP1 POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FE DUP2 PUSH3 0x19F DUP6 DUP6 PUSH3 0x205 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x21 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x55 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x75 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SWAP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x54AE0E3 PUSH1 0xE2 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH3 0x265 SWAP1 DUP3 ADD PUSH3 0x3F8 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x2AC SWAP1 PUSH32 0x0 SWAP1 DUP5 SWAP1 PUSH1 0x20 ADD PUSH3 0x486 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x2CC SWAP3 SWAP2 PUSH1 0x20 ADD PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SELFBALANCE LT ISZERO PUSH3 0x33D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A20696E73756666696369656E742062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A2062797465636F6465206C656E677468206973207A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST DUP4 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP8 CREATE2 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A204661696C6564206F6E206465706C6F7900000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x98C DUP1 PUSH3 0x4FE DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x470 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x456 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x480 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x4B5 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x453 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH3 0x4DE DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH3 0x4F4 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98C CODESIZE SUB DUP1 PUSH2 0x98C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x48F JUMP JUMPDEST DUP2 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x6B JUMPI PUSH2 0x6B PUSH2 0x574 JUMP JUMPDEST PUSH2 0x77 DUP3 DUP3 PUSH1 0x0 PUSH2 0x80 JUMP JUMPDEST POP POP POP POP PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x89 DUP4 PUSH2 0x14B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCA JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH2 0x144 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST DUP4 PUSH2 0x2DC PUSH1 0x20 SHL PUSH2 0x27 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x15E DUP2 PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST DUP1 PUSH2 0x2BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x317 PUSH1 0x20 SHL PUSH2 0x62 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x301 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x965 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x31A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3EE DUP3 DUP3 DUP7 PUSH2 0x3F8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x407 JUMPI POP DUP2 PUSH2 0x301 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x417 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B4 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x144 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AB DUP4 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4EE PUSH2 0x44D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x516 JUMPI PUSH2 0x516 PUSH2 0x44D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x463 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x56F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x301 DUP3 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5B7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5E0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x603 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DF584E MOD SLT 0x1E PUSH22 0x75B78856BFB9100E501991C5A1D3346E026D24F463FE 0xB2 0xC PUSH4 0x64736F6C PUSH4 0x4300080B STOP CALLER LOG3 CREATE 0xAD PUSH21 0xE5423AEBFD80D3EF4346578335A9A72AEAEE59FF6C 0xB3 PC 0x2B CALLDATALOAD SGT RETURNDATASIZE POP COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220812F80 0xBE SWAP14 NUMBER SMOD LOG0 0x1E SDIV CREATE 0xBD 0x1E 0xC1 0x2A PUSH23 0xFB1BFD80548351E5BA75C8675B8D881F64736F6C634300 ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "141:1558:34:-:0;;;565:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;604:16:34;;;141:1558;;14:290:43;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:43:o;:::-;141:1558:34;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@BEACON_4965": {
                  "entryPoint": null,
                  "id": 4965,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@SALT_4968": {
                  "entryPoint": null,
                  "id": 4968,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getByteCode_5019": {
                  "entryPoint": 517,
                  "id": 5019,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@computeAddress_3559": {
                  "entryPoint": null,
                  "id": 3559,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@computeAddress_3598": {
                  "entryPoint": null,
                  "id": 3598,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@computeAddress_5086": {
                  "entryPoint": 396,
                  "id": 5086,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@deployWrapper_5065": {
                  "entryPoint": 226,
                  "id": 5065,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@deploy_3539": {
                  "entryPoint": 740,
                  "id": 3539,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": null,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint16t_uint40": {
                  "entryPoint": 1030,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1226,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1158,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40_t_address__to_t_uint16_t_uint40_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1107,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4247:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "99:361:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "145:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "154:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "157:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "147:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "147:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "147:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "120:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "116:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "116:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "141:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "112:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "112:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "109:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "170:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "196:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "183:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "183:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "174:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "256:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "265:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "268:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "258:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "258:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "258:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "228:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "239:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "246:6:43",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "235:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "235:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "225:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "225:29:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "215:57:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "281:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "291:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "281:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "305:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "337:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "348:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "333:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "333:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "320:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "320:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "309:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "412:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "421:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "424:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "414:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "414:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "414:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "374:7:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "387:7:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "396:12:43",
                                            "type": "",
                                            "value": "0xffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "383:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "383:26:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "371:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "371:39:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "364:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "364:47:43"
                              },
                              "nodeType": "YulIf",
                              "src": "361:67:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "437:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "447:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "437:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint16t_uint40",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "57:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "68:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "80:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "88:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:446:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "566:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "576:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "599:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "584:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "584:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "576:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "618:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "633:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "649:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "654:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "645:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "645:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "658:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "641:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "641:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "629:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "629:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "611:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "611:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "611:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "535:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "546:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "557:4:43",
                            "type": ""
                          }
                        ],
                        "src": "465:203:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "774:76:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "784:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "796:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "807:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "784:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "826:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "837:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "819:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "819:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "819:25:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "743:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "754:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "765:4:43",
                            "type": ""
                          }
                        ],
                        "src": "673:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1008:220:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1018:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1030:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1041:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1026:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1026:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1018:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1060:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1075:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1083:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1071:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1071:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1053:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1053:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1053:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1111:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1122:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1107:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1107:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1131:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1139:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1127:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1127:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1100:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1100:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1100:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1173:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1184:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1169:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1169:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1193:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1209:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1214:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1205:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1205:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1218:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1201:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1201:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1189:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1189:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1162:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1162:60:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40_t_address__to_t_uint16_t_uint40_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "961:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "972:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "980:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "988:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "999:4:43",
                            "type": ""
                          }
                        ],
                        "src": "855:373:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1358:151:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1368:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1380:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1391:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1376:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1376:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1410:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1425:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1433:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1421:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1421:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1403:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1403:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1403:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1461:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1472:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1457:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1457:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1481:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1489:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1477:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1477:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1450:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1450:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1450:53:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1319:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1330:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1338:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1349:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1233:276:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1567:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1577:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1586:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1581:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1646:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1671:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "1676:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1667:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1667:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1690:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1695:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1686:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1686:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1680:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1680:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1660:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1660:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1660:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1607:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1610:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1604:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1604:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1618:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1620:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1629:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1632:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1625:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1625:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1620:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1600:3:43",
                                "statements": []
                              },
                              "src": "1596:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1735:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1748:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "1753:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1744:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1744:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1762:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1737:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1737:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1737:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1724:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1727:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1721:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1721:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1718:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "1545:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "1550:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1555:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1514:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1924:331:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1941:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1972:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1977:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1968:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1968:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1981:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1964:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1964:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1952:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1952:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1934:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1934:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1934:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2016:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2001:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2001:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2021:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1994:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1994:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1994:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2033:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2053:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2047:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2047:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2037:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2080:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2091:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2076:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2076:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2096:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2069:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2069:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2069:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2138:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2146:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2134:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2134:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2155:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2166:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2151:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2151:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2171:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2112:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2112:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2112:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2187:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2203:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2222:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2230:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2218:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2218:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2239:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "2235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2235:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2214:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2214:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2199:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2199:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2246:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2195:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2195:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2187:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1885:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1896:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1904:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1915:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1777:478:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2443:283:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2453:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2473:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2467:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2467:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2457:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2515:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2523:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2511:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2511:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2530:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2535:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2489:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2489:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2489:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2551:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2568:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2573:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2564:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2564:16:43"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2555:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2589:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2611:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2605:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2605:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2593:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2653:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2661:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2649:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2649:17:43"
                                  },
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2668:5:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2675:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2627:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2627:57:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2627:57:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2693:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2704:5:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2711:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2700:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2700:20:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2693:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2411:3:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2416:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2424:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2435:3:43",
                            "type": ""
                          }
                        ],
                        "src": "2260:466:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2905:179:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2922:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2933:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2915:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2915:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2915:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2956:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2967:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2952:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2952:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2972:2:43",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2945:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2945:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2945:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2995:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3006:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2991:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2991:18:43"
                                  },
                                  {
                                    "hexValue": "437265617465323a20696e73756666696369656e742062616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3011:31:43",
                                    "type": "",
                                    "value": "Create2: insufficient balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2984:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2984:59:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2984:59:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3052:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3064:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3075:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3060:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3060:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3052:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2882:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2896:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2731:353:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3263:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3280:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3291:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3273:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3273:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3273:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3314:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3325:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3310:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3330:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3303:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3303:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3303:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3353:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3364:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3349:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3349:18:43"
                                  },
                                  {
                                    "hexValue": "437265617465323a2062797465636f6465206c656e677468206973207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3369:34:43",
                                    "type": "",
                                    "value": "Create2: bytecode length is zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3342:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3342:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3342:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3413:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3425:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3436:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3421:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3421:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3413:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3240:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3254:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3089:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3624:175:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3641:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3652:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3634:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3634:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3634:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3675:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3686:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3671:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3671:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3691:2:43",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3664:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3664:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3664:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3714:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3725:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3710:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3710:18:43"
                                  },
                                  {
                                    "hexValue": "437265617465323a204661696c6564206f6e206465706c6f79",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3730:27:43",
                                    "type": "",
                                    "value": "Create2: Failed on deploy"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3703:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3703:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3703:55:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3767:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3779:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3790:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3775:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3775:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3767:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3601:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3615:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3450:349:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4005:240:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4022:3:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4031:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4043:3:43",
                                            "type": "",
                                            "value": "248"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4048:3:43",
                                            "type": "",
                                            "value": "255"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4039:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4039:13:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4027:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4027:26:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4015:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4015:39:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4015:39:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4074:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4079:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4070:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4070:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4091:2:43",
                                            "type": "",
                                            "value": "96"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4095:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4087:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4087:15:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4108:26:43",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "4104:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4104:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4083:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4083:53:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4063:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4063:74:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4063:74:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4157:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4162:2:43",
                                        "type": "",
                                        "value": "21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4153:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4153:12:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4167:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4146:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4146:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4146:28:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4194:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4199:2:43",
                                        "type": "",
                                        "value": "53"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4190:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4190:12:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4204:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4183:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4183:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4183:28:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4220:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4231:3:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4236:2:43",
                                    "type": "",
                                    "value": "85"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4227:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4227:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4220:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3957:3:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3962:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3970:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3978:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3986:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3997:3:43",
                            "type": ""
                          }
                        ],
                        "src": "3804:441:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_uint16t_uint40(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint16_t_uint40_t_address__to_t_uint16_t_uint40_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        copy_memory_to_memory(add(value1, 32), add(headStart, 96), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Create2: insufficient balance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Create2: bytecode length is zero\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Create2: Failed on deploy\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "4965": [
                  {
                    "length": 32,
                    "start": 145
                  },
                  {
                    "length": 32,
                    "start": 641
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063422a73a4146200005757806349493a4d146200008b57806395fd976514620000b3578063ba9a91a514620000ca575b600080fd5b6200006e6200006836600462000406565b620000e2565b6040516001600160a01b0390911681526020015b60405180910390f35b6200006e7f000000000000000000000000000000000000000000000000000000000000000081565b6200006e620000c436600462000406565b6200018c565b620000d3600081565b60405190815260200162000082565b600080620000f184846200018c565b90506001600160a01b0381163b156200010c57905062000186565b600062000126818062000120888862000205565b620002e4565b6040805161ffff8816815264ffffffffff871660208201526001600160a01b0383168183015290519192507fc83ad9c9cf773a3378ccc5ce465c8524049645b2639a8c81816a45812c2b2459919081900360600190a19150620001869050565b92915050565b6000620001fe816200019f858562000205565b80519060200120604080516001600160f81b03196020808301919091523060601b6bffffffffffffffffffffffff1916602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b60405161ffff8316602482015264ffffffffff8216604482015260609060009060640160408051601f19818403018152918152602080830180516001600160e01b031663054ae0e360e21b179052905191925062000265908201620003f8565b601f1982820381018352601f909101166040819052620002ac907f000000000000000000000000000000000000000000000000000000000000000090849060200162000486565b60408051601f1981840301815290829052620002cc9291602001620004ca565b60405160208183030381529060405291505092915050565b600080844710156200033d5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b82516200038d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000334565b8383516020850187f590506001600160a01b038116620003f05760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640162000334565b949350505050565b61098c80620004fe83390190565b600080604083850312156200041a57600080fd5b823561ffff811681146200042d57600080fd5b9150602083013564ffffffffff811681146200044857600080fd5b809150509250929050565b60005b838110156200047057818101518382015260200162000456565b8381111562000480576000848401525b50505050565b60018060a01b03831681526040602082015260008251806040840152620004b581606085016020870162000453565b601f01601f1916919091016060019392505050565b60008351620004de81846020880162000453565b835190830190620004f481836020880162000453565b0194935050505056fe608060405260405161098c38038061098c8339810160408190526100229161048f565b818161004f60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161054f565b6000805160206109458339815191521461006b5761006b610574565b61007782826000610080565b505050506105f4565b6100898361014b565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100ca5750805b1561014657610144836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610134919061058a565b836102dc60201b6100271760201c565b505b505050565b61015e8161030860201b6100531760201c565b6101bd5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610231816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610222919061058a565b61030860201b6100531760201c565b6102965760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b4565b806102bb60008051602061094583398151915260001b61031760201b6100621760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061030183836040518060600160405280602781526020016109656027913961031a565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b4565b600080856001600160a01b03168560405161039d91906105a5565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5090925090506103ee8282866103f8565b9695505050505050565b60608315610407575081610301565b8251156104175782518084602001fd5b8160405162461bcd60e51b81526004016101b491906105c1565b80516001600160a01b038116811461044857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561047e578181015183820152602001610466565b838111156101445750506000910152565b600080604083850312156104a257600080fd5b6104ab83610431565b60208401519092506001600160401b03808211156104c857600080fd5b818501915085601f8301126104dc57600080fd5b8151818111156104ee576104ee61044d565b604051601f8201601f19908116603f011681019083821181831017156105165761051661044d565b8160405282815288602084870101111561052f57600080fd5b610540836020830160208801610463565b80955050505050509250929050565b60008282101561056f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561059c57600080fd5b61030182610431565b600082516105b7818460208701610463565b9190910192915050565b60208152600082518060208401526105e0816040850160208701610463565b601f01601f19169190910160400192915050565b610342806106036000396000f3fe60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df584e06121e7575b78856bfb9100e501991c5a1d3346e026d24f463feb20c6364736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220812f80be9d4307a01e05f0bd1ec12a76fb1bfd80548351e5ba75c8675b8d881f64736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x52 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x422A73A4 EQ PUSH3 0x57 JUMPI DUP1 PUSH4 0x49493A4D EQ PUSH3 0x8B JUMPI DUP1 PUSH4 0x95FD9765 EQ PUSH3 0xB3 JUMPI DUP1 PUSH4 0xBA9A91A5 EQ PUSH3 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x6E PUSH3 0x68 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0xE2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x6E PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x6E PUSH3 0xC4 CALLDATASIZE PUSH1 0x4 PUSH3 0x406 JUMP JUMPDEST PUSH3 0x18C JUMP JUMPDEST PUSH3 0xD3 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xF1 DUP5 DUP5 PUSH3 0x18C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH3 0x10C JUMPI SWAP1 POP PUSH3 0x186 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x126 DUP2 DUP1 PUSH3 0x120 DUP9 DUP9 PUSH3 0x205 JUMP JUMPDEST PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP9 AND DUP2 MSTORE PUSH5 0xFFFFFFFFFF DUP8 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH32 0xC83AD9C9CF773A3378CCC5CE465C8524049645B2639A8C81816A45812C2B2459 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 SWAP2 POP PUSH3 0x186 SWAP1 POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FE DUP2 PUSH3 0x19F DUP6 DUP6 PUSH3 0x205 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x21 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x55 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x75 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x0 SWAP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x54AE0E3 PUSH1 0xE2 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH3 0x265 SWAP1 DUP3 ADD PUSH3 0x3F8 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x2AC SWAP1 PUSH32 0x0 SWAP1 DUP5 SWAP1 PUSH1 0x20 ADD PUSH3 0x486 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x2CC SWAP3 SWAP2 PUSH1 0x20 ADD PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SELFBALANCE LT ISZERO PUSH3 0x33D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A20696E73756666696369656E742062616C616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x38D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A2062797465636F6465206C656E677468206973207A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST DUP4 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP8 CREATE2 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x437265617465323A204661696C6564206F6E206465706C6F7900000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x334 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x98C DUP1 PUSH3 0x4FE DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH3 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x470 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x456 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x480 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH3 0x4B5 DUP2 PUSH1 0x60 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x453 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x60 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH3 0x4DE DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH3 0x4F4 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH3 0x453 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98C CODESIZE SUB DUP1 PUSH2 0x98C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x48F JUMP JUMPDEST DUP2 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x6B JUMPI PUSH2 0x6B PUSH2 0x574 JUMP JUMPDEST PUSH2 0x77 DUP3 DUP3 PUSH1 0x0 PUSH2 0x80 JUMP JUMPDEST POP POP POP POP PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x89 DUP4 PUSH2 0x14B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCA JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH2 0x144 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST DUP4 PUSH2 0x2DC PUSH1 0x20 SHL PUSH2 0x27 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x15E DUP2 PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST DUP1 PUSH2 0x2BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x317 PUSH1 0x20 SHL PUSH2 0x62 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x301 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x965 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x31A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3EE DUP3 DUP3 DUP7 PUSH2 0x3F8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x407 JUMPI POP DUP2 PUSH2 0x301 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x417 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B4 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x144 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AB DUP4 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4EE PUSH2 0x44D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x516 JUMPI PUSH2 0x516 PUSH2 0x44D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x463 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x56F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x301 DUP3 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5B7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5E0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x603 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DF584E MOD SLT 0x1E PUSH22 0x75B78856BFB9100E501991C5A1D3346E026D24F463FE 0xB2 0xC PUSH4 0x64736F6C PUSH4 0x4300080B STOP CALLER LOG3 CREATE 0xAD PUSH21 0xE5423AEBFD80D3EF4346578335A9A72AEAEE59FF6C 0xB3 PC 0x2B CALLDATALOAD SGT RETURNDATASIZE POP COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220812F80 0xBE SWAP14 NUMBER SMOD LOG0 0x1E SDIV CREATE 0xBD 0x1E 0xC1 0x2A PUSH23 0xFB1BFD80548351E5BA75C8675B8D881F64736F6C634300 ADDMOD SIGNEXTEND STOP CALLER ",
              "sourceMap": "141:1558:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;953:549;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;629:32:43;;;611:51;;599:2;584:18;953:549:34;;;;;;;;341:31;;;;;1508:189;;;;;;:::i;:::-;;:::i;378:32::-;;409:1;378:32;;;;;819:25:43;;;807:2;792:18;378:32:34;673:177:43;953:549:34;1030:7;1049:24;1076:36;1091:10;1103:8;1076:14;:36::i;:::-;1049:63;-1:-1:-1;;;;;;1465:19:25;;;:23;1123:373:34;;1268:16;-1:-1:-1;1261:23:34;;1123:373;1315:15;1333:59;1315:15;;1357:34;1370:10;1382:8;1357:12;:34::i;:::-;1333:14;:59::i;:::-;1411:46;;;1083:6:43;1071:19;;1053:38;;1139:12;1127:25;;1122:2;1107:18;;1100:53;-1:-1:-1;;;;;1189:32:43;;1169:18;;;1162:60;1411:46:34;;1189:32:43;;-1:-1:-1;1411:46:34;;;;;;1041:2:43;1411:46:34;;;1478:7;-1:-1:-1;1471:14:34;;-1:-1:-1;1471:14:34;953:549;;;;;:::o;1508:189::-;1589:7;1615:75;1589:7;1654:34;1667:10;1679:8;1654:12;:34::i;:::-;1644:45;;;;;;2363:60:27;;;-1:-1:-1;;;;;;2363:60:27;;;;4015:39:43;;;;1931:4:27;4091:2:43;4087:15;-1:-1:-1;;4083:53:43;4070:11;;;4063:74;4153:12;;;4146:28;;;4190:12;;;;4183:28;;;2363:60:27;;;;;;;;;;4227:12:43;;;;2363:60:27;;;2353:71;;;;;1862:7;;1615:75:34;1608:82;1508:189;-1:-1:-1;;;1508:189:34:o;633:314::-;766:74;;1433:6:43;1421:19;;766:74:34;;;1403:38:43;1489:12;1477:25;;1457:18;;;1450:53;714:12:34;;738:25;;1376:18:43;;766:74:34;;;-1:-1:-1;;766:74:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;766:74:34;-1:-1:-1;;;766:74:34;;;874:31;;766:74;;-1:-1:-1;874:31:34;;;;;:::i;:::-;-1:-1:-1;;874:31:34;;;;;;;;;;;;;;;;907:32;;918:6;;926:12;;874:31;907:32;;:::i;:::-;;;;-1:-1:-1;;907:32:34;;;;;;;;;;857:83;;;907:32;857:83;;:::i;:::-;;;;;;;;;;;;;850:90;;;633:314;;;;:::o;1066:509:27:-;1183:7;1202:12;1257:6;1232:21;:31;;1224:73;;;;-1:-1:-1;;;1224:73:27;;2933:2:43;1224:73:27;;;2915:21:43;2972:2;2952:18;;;2945:30;3011:31;2991:18;;;2984:59;3060:18;;1224:73:27;;;;;;;;;1315:15;;1307:65;;;;-1:-1:-1;;;1307:65:27;;3291:2:43;1307:65:27;;;3273:21:43;;;3310:18;;;3303:30;3369:34;3349:18;;;3342:62;3421:18;;1307:65:27;3089:356:43;1307:65:27;1467:4;1456:8;1450:15;1443:4;1433:8;1429:19;1421:6;1413:59;1405:67;-1:-1:-1;;;;;;1499:18:27;;1491:56;;;;-1:-1:-1;;;1491:56:27;;3652:2:43;1491:56:27;;;3634:21:43;3691:2;3671:18;;;3664:30;3730:27;3710:18;;;3703:55;3775:18;;1491:56:27;3450:349:43;1491:56:27;1564:4;1066:509;-1:-1:-1;;;;1066:509:27:o;-1:-1:-1:-;;;;;;;;:::o;14:446:43:-;80:6;88;141:2;129:9;120:7;116:23;112:32;109:52;;;157:1;154;147:12;109:52;196:9;183:23;246:6;239:5;235:18;228:5;225:29;215:57;;268:1;265;258:12;215:57;291:5;-1:-1:-1;348:2:43;333:18;;320:32;396:12;383:26;;371:39;;361:67;;424:1;421;414:12;361:67;447:7;437:17;;;14:446;;;;;:::o;1514:258::-;1586:1;1596:113;1610:6;1607:1;1604:13;1596:113;;;1686:11;;;1680:18;1667:11;;;1660:39;1632:2;1625:10;1596:113;;;1727:6;1724:1;1721:13;1718:48;;;1762:1;1753:6;1748:3;1744:16;1737:27;1718:48;;1514:258;;;:::o;1777:478::-;1981:1;1977;1972:3;1968:11;1964:19;1956:6;1952:32;1941:9;1934:51;2021:2;2016;2005:9;2001:18;1994:30;1915:4;2053:6;2047:13;2096:6;2091:2;2080:9;2076:18;2069:34;2112:66;2171:6;2166:2;2155:9;2151:18;2146:2;2138:6;2134:15;2112:66;:::i;:::-;2239:2;2218:15;-1:-1:-1;;2214:29:43;2199:45;;;;2246:2;2195:54;;1777:478;-1:-1:-1;;;1777:478:43:o;2260:466::-;2435:3;2473:6;2467:13;2489:53;2535:6;2530:3;2523:4;2515:6;2511:17;2489:53;:::i;:::-;2605:13;;2564:16;;;;2627:57;2605:13;2564:16;2661:4;2649:17;;2627:57;:::i;:::-;2700:20;;2260:466;-1:-1:-1;;;;2260:466:43:o"
            },
            "methodIdentifiers": {
              "BEACON()": "49493a4d",
              "SALT()": "ba9a91a5",
              "computeAddress(uint16,uint40)": "95fd9765",
              "deployWrapper(uint16,uint40)": "422a73a4"
            }
          }
        }
      },
      "wrapped-fcash/contracts/proxy/nBeaconProxy.sol": {
        "nBeaconProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "beacon",
                  "type": "address"
                }
              ],
              "name": "BeaconUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5104": {
                  "entryPoint": null,
                  "id": 5104,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_setBeacon_2387": {
                  "entryPoint": 331,
                  "id": 2387,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_upgradeBeaconToAndCall_2425": {
                  "entryPoint": 128,
                  "id": 2425,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@functionDelegateCall_3399": {
                  "entryPoint": 732,
                  "id": 3399,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3434": {
                  "entryPoint": 794,
                  "id": 3434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_3625": {
                  "entryPoint": 791,
                  "id": 3625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 776,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 1016,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1073,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1418,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 1167,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1445,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1473,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 1359,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1123,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x01": {
                  "entryPoint": 1396,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 1101,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4030:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:43"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:43",
                            "type": ""
                          }
                        ],
                        "src": "14:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "228:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "245:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "252:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "257:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "248:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "248:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "238:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "238:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "285:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "288:4:43",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "278:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "278:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "278:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "309:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "302:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "302:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "302:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "196:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "381:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "391:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "400:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "395:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "460:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "485:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "490:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "481:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "481:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "504:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "509:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "500:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "500:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "494:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "494:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "474:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "474:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "474:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "421:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "424:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "418:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "418:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "432:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "434:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "446:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "439:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "439:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "434:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "414:3:43",
                                "statements": []
                              },
                              "src": "410:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "549:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "562:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "567:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "558:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "558:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "576:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "551:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "551:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "551:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "541:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "535:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "535:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "532:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "359:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "364:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "369:6:43",
                            "type": ""
                          }
                        ],
                        "src": "328:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "698:861:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "744:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "753:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "756:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "746:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "746:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "746:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "719:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "728:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "715:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "715:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "740:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "711:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "711:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "708:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "769:50:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "779:29:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "779:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "769:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "828:39:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "852:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "863:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "848:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "848:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "842:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "842:25:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "832:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "876:28:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "894:2:43",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "898:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "890:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "890:10:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "902:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "886:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "886:18:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "880:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "931:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "940:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "943:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "933:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "933:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "933:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "919:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "927:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "916:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "916:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "913:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "956:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "970:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "981:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "966:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "966:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "960:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1036:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1045:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1048:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1038:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1038:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1038:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1015:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1019:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1011:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1011:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1026:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1007:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1007:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1000:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1000:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "997:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1061:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1071:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1071:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1065:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1103:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1105:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1105:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1105:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1095:2:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1092:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1092:10:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1089:36:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1134:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1148:2:43",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1144:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1144:7:43"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1138:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1160:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1180:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1164:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1192:71:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1214:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1238:2:43"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1242:4:43",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1234:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1234:13:43"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1249:2:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1230:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1230:22:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1254:2:43",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1226:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1226:31:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1259:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1222:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1222:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1210:53:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1196:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1322:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1324:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1324:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1324:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:10:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1293:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1278:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1278:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1301:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1313:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1298:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1298:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1275:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1275:46:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1272:72:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1360:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1364:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1353:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1353:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1353:22:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1391:6:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1399:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1384:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1384:18:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1384:18:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1448:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1457:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1460:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1450:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1450:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1450:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1425:2:43"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1421:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1421:11:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1434:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1417:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1417:20:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1411:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1499:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1503:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1495:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1512:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1520:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1508:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1508:15:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1525:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1473:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1473:55:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1537:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1547:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1537:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "656:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "667:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "679:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "687:6:43",
                            "type": ""
                          }
                        ],
                        "src": "591:968:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1613:173:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1643:111:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1664:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1671:3:43",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1676:10:43",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1667:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1667:20:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1657:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1657:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1657:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1708:1:43",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1711:4:43",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1701:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1701:15:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1736:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1739:4:43",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1729:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1729:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1729:15:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1629:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1632:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1626:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1626:8:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1623:131:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1763:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1775:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1778:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1771:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1771:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "1763:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1595:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1598:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "1604:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1564:222:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1823:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1840:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1847:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1852:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1843:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1843:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1833:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1833:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1833:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1880:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1883:4:43",
                                    "type": "",
                                    "value": "0x01"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1873:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1873:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1873:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1904:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1907:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1897:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1897:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1897:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x01",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1791:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2004:127:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2050:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2059:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2062:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2052:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2052:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2052:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2025:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2034:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2021:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2021:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2046:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2075:50:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2115:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2085:29:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2085:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2075:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1970:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1981:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1993:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1923:208:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2310:227:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2327:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2338:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2320:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2320:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2320:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2372:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2357:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2357:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2377:2:43",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2350:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2350:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2400:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2411:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2396:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2396:18:43"
                                  },
                                  {
                                    "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2416:34:43",
                                    "type": "",
                                    "value": "ERC1967: new beacon is not a con"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2389:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2389:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2389:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2471:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2482:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2467:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2467:18:43"
                                  },
                                  {
                                    "hexValue": "7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2487:7:43",
                                    "type": "",
                                    "value": "tract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2460:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2460:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2460:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2504:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2516:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2527:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2512:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2512:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2504:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2287:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2301:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2136:401:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2716:238:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2733:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2744:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2726:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2726:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2726:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2767:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2778:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2763:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2763:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2783:2:43",
                                    "type": "",
                                    "value": "48"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2756:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2756:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2806:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2817:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2802:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2802:18:43"
                                  },
                                  {
                                    "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e2069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2822:34:43",
                                    "type": "",
                                    "value": "ERC1967: beacon implementation i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2795:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2795:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2795:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2877:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2888:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2873:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2873:18:43"
                                  },
                                  {
                                    "hexValue": "73206e6f74206120636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2893:18:43",
                                    "type": "",
                                    "value": "s not a contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2866:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2866:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2866:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2921:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2933:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2944:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2929:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2929:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2921:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2693:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2707:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2542:412:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3133:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3150:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3161:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3143:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3143:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3143:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3184:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3195:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3180:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3180:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3200:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3173:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3173:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3223:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3234:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3219:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3219:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3239:34:43",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3212:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3212:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3212:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3294:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3305:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3290:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3290:18:43"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3310:8:43",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3283:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3328:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3340:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3351:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3328:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3110:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3124:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2959:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3503:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3513:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3533:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3527:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3527:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3517:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3575:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3583:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3571:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3571:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3590:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3595:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3549:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3549:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3549:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3611:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3622:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3627:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3618:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3618:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3611:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3479:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3484:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3495:3:43",
                            "type": ""
                          }
                        ],
                        "src": "3366:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3766:262:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3783:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3794:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3776:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3776:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3776:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3806:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3826:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3820:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3820:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3810:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3853:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3864:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3849:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3849:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3869:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3842:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3842:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3842:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3919:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3907:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3907:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3928:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3939:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3924:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3924:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3944:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3885:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3885:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3885:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3960:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3976:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3995:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4003:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3991:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3991:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4012:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "4008:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4008:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3987:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3987:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3972:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3972:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4019:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3968:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3968:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3735:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3746:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3757:4:43",
                            "type": ""
                          }
                        ],
                        "src": "3645:383:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let offset := mload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value1 := memPtr\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function panic_error_0x01()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x01)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1967: new beacon is not a con\")\n        mstore(add(headStart, 96), \"tract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ERC1967: beacon implementation i\")\n        mstore(add(headStart, 96), \"s not a contract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "608060405260405161098c38038061098c8339810160408190526100229161048f565b818161004f60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161054f565b6000805160206109458339815191521461006b5761006b610574565b61007782826000610080565b505050506105f4565b6100898361014b565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100ca5750805b1561014657610144836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610134919061058a565b836102dc60201b6100271760201c565b505b505050565b61015e8161030860201b6100531760201c565b6101bd5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610231816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610222919061058a565b61030860201b6100531760201c565b6102965760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101b4565b806102bb60008051602061094583398151915260001b61031760201b6100621760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061030183836040518060600160405280602781526020016109656027913961031a565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101b4565b600080856001600160a01b03168560405161039d91906105a5565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5090925090506103ee8282866103f8565b9695505050505050565b60608315610407575081610301565b8251156104175782518084602001fd5b8160405162461bcd60e51b81526004016101b491906105c1565b80516001600160a01b038116811461044857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561047e578181015183820152602001610466565b838111156101445750506000910152565b600080604083850312156104a257600080fd5b6104ab83610431565b60208401519092506001600160401b03808211156104c857600080fd5b818501915085601f8301126104dc57600080fd5b8151818111156104ee576104ee61044d565b604051601f8201601f19908116603f011681019083821181831017156105165761051661044d565b8160405282815288602084870101111561052f57600080fd5b610540836020830160208801610463565b80955050505050509250929050565b60008282101561056f57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561059c57600080fd5b61030182610431565b600082516105b7818460208701610463565b9190910192915050565b60208152600082518060208401526105e0816040850160208701610463565b601f01601f19169190910160400192915050565b610342806106036000396000f3fe60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df584e06121e7575b78856bfb9100e501991c5a1d3346e026d24f463feb20c6364736f6c634300080b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x98C CODESIZE SUB DUP1 PUSH2 0x98C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x48F JUMP JUMPDEST DUP2 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D51 PUSH2 0x54F JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE EQ PUSH2 0x6B JUMPI PUSH2 0x6B PUSH2 0x574 JUMP JUMPDEST PUSH2 0x77 DUP3 DUP3 PUSH1 0x0 PUSH2 0x80 JUMP JUMPDEST POP POP POP POP PUSH2 0x5F4 JUMP JUMPDEST PUSH2 0x89 DUP4 PUSH2 0x14B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x1CF3B03A6CF19FA2BABA4DF148E9DCABEDEA7F8A5C07840E207E5C089BE95D3E SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x0 DUP3 MLOAD GT DUP1 PUSH2 0xCA JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH2 0x144 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x110 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST DUP4 PUSH2 0x2DC PUSH1 0x20 SHL PUSH2 0x27 OR PUSH1 0x20 SHR JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x15E DUP2 PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1BD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A206E657720626561636F6E206973206E6F74206120636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1D1C9858DD PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x308 PUSH1 0x20 SHL PUSH2 0x53 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x296 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x455243313936373A20626561636F6E20696D706C656D656E746174696F6E2069 PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0x1CC81B9BDD08184818DBDB9D1C9858DD PUSH1 0x82 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST DUP1 PUSH2 0x2BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 SHL PUSH2 0x317 PUSH1 0x20 SHL PUSH2 0x62 OR PUSH1 0x20 SHR JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x301 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x965 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x31A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x382 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3EE DUP3 DUP3 DUP7 PUSH2 0x3F8 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x407 JUMPI POP DUP2 PUSH2 0x301 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x417 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B4 SWAP2 SWAP1 PUSH2 0x5C1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x144 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AB DUP4 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4EE PUSH2 0x44D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x516 JUMPI PUSH2 0x516 PUSH2 0x44D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x52F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x540 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x463 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x56F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x301 DUP3 PUSH2 0x431 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5B7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x5E0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x463 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x342 DUP1 PUSH2 0x603 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DF584E MOD SLT 0x1E PUSH22 0x75B78856BFB9100E501991C5A1D3346E026D24F463FE 0xB2 0xC PUSH4 0x64736F6C PUSH4 0x4300080B STOP CALLER LOG3 CREATE 0xAD PUSH21 0xE5423AEBFD80D3EF4346578335A9A72AEAEE59FF6C 0xB3 PC 0x2B CALLDATALOAD SGT RETURNDATASIZE POP COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C65640000 ",
              "sourceMap": "123:220:35:-:0;;;166:84;;;;;;;;;;;;;;;;;;:::i;:::-;233:6;241:4;1142:46:17;1187:1;1150:33;1142:46;:::i;:::-;-1:-1:-1;;;;;;;;;;;1118:71:17;1111:79;;;;:::i;:::-;1200:44;1224:6;1232:4;1238:5;1200:23;:44::i;:::-;1046:205;;166:84:35;;123:220;;6168:343:15;6304:21;6315:9;6304:10;:21::i;:::-;6340:25;;-1:-1:-1;;;;;6340:25:15;;;;;;;;6393:1;6379:4;:11;:15;:28;;;;6398:9;6379:28;6375:130;;;6423:71;6460:9;-1:-1:-1;;;;;6452:33:15;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6489:4;6423:28;;;;;:71;;:::i;:::-;;6375:130;6168:343;;;:::o;5494:371::-;5559:29;5578:9;5559:18;;;;;:29;;:::i;:::-;5551:79;;;;-1:-1:-1;;;5551:79:15;;2338:2:43;5551:79:15;;;2320:21:43;2377:2;2357:18;;;2350:30;2416:34;2396:18;;;2389:62;-1:-1:-1;;;2467:18:43;;;2460:35;2512:19;;5551:79:15;;;;;;;;;5661:55;5688:9;-1:-1:-1;;;;;5680:33:15;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5661:18;;;;;:55;;:::i;:::-;5640:150;;;;-1:-1:-1;;;5640:150:15;;2744:2:43;5640:150:15;;;2726:21:43;2783:2;2763:18;;;2756:30;2822:34;2802:18;;;2795:62;-1:-1:-1;;;2873:18:43;;;2866:46;2929:19;;5640:150:15;2542:412:43;5640:150:15;5849:9;5800:40;-1:-1:-1;;;;;;;;;;;5827:12:15;;5800:26;;;;;:40;;:::i;:::-;:58;;-1:-1:-1;;;;;;5800:58:15;-1:-1:-1;;;;;5800:58:15;;;;;;;;;;-1:-1:-1;5494:371:15:o;6570:198:25:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:25:o;1175:320::-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1599:147:28:-;1726:4;1599:147::o;6954:387:25:-;7095:12;-1:-1:-1;;;;;1465:19:25;;;7119:69;;;;-1:-1:-1;;;7119:69:25;;3161:2:43;7119:69:25;;;3143:21:43;3200:2;3180:18;;;3173:30;3239:34;3219:18;;;3212:62;-1:-1:-1;;;3290:18:43;;;3283:36;3336:19;;7119:69:25;2959:402:43;7119:69:25;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:25;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7199:67:25;;-1:-1:-1;7199:67:25;-1:-1:-1;7283:51:25;7199:67;;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;14:177:43:-;93:13;;-1:-1:-1;;;;;135:31:43;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:258;400:1;410:113;424:6;421:1;418:13;410:113;;;500:11;;;494:18;481:11;;;474:39;446:2;439:10;410:113;;;541:6;538:1;535:13;532:48;;;-1:-1:-1;;576:1:43;558:16;;551:27;328:258::o;591:968::-;679:6;687;740:2;728:9;719:7;715:23;711:32;708:52;;;756:1;753;746:12;708:52;779:40;809:9;779:40;:::i;:::-;863:2;848:18;;842:25;769:50;;-1:-1:-1;;;;;;916:14:43;;;913:34;;;943:1;940;933:12;913:34;981:6;970:9;966:22;956:32;;1026:7;1019:4;1015:2;1011:13;1007:27;997:55;;1048:1;1045;1038:12;997:55;1077:2;1071:9;1099:2;1095;1092:10;1089:36;;;1105:18;;:::i;:::-;1180:2;1174:9;1148:2;1234:13;;-1:-1:-1;;1230:22:43;;;1254:2;1226:31;1222:40;1210:53;;;1278:18;;;1298:22;;;1275:46;1272:72;;;1324:18;;:::i;:::-;1364:10;1360:2;1353:22;1399:2;1391:6;1384:18;1439:7;1434:2;1429;1425;1421:11;1417:20;1414:33;1411:53;;;1460:1;1457;1450:12;1411:53;1473:55;1525:2;1520;1512:6;1508:15;1503:2;1499;1495:11;1473:55;:::i;:::-;1547:6;1537:16;;;;;;;591:968;;;;;:::o;1564:222::-;1604:4;1632:1;1629;1626:8;1623:131;;;1676:10;1671:3;1667:20;1664:1;1657:31;1711:4;1708:1;1701:15;1739:4;1736:1;1729:15;1623:131;-1:-1:-1;1771:9:43;;1564:222::o;1791:127::-;1852:10;1847:3;1843:20;1840:1;1833:31;1883:4;1880:1;1873:15;1907:4;1904:1;1897:15;1923:208;1993:6;2046:2;2034:9;2025:7;2021:23;2017:32;2014:52;;;2062:1;2059;2052:12;2014:52;2085:40;2115:9;2085:40;:::i;3366:274::-;3495:3;3533:6;3527:13;3549:53;3595:6;3590:3;3583:4;3575:6;3571:17;3549:53;:::i;:::-;3618:16;;;;;3366:274;-1:-1:-1;;3366:274:43:o;3645:383::-;3794:2;3783:9;3776:21;3757:4;3826:6;3820:13;3869:6;3864:2;3853:9;3849:18;3842:34;3885:66;3944:6;3939:2;3928:9;3924:18;3919:2;3911:6;3907:15;3885:66;:::i;:::-;4012:2;3991:15;-1:-1:-1;;3987:29:43;3972:45;;;;4019:2;3968:54;;3645:383;-1:-1:-1;;3645:383:43:o;:::-;123:220:35;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_2464": {
                  "entryPoint": null,
                  "id": 2464,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_5109": {
                  "entryPoint": null,
                  "id": 5109,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_beforeFallback_2477": {
                  "entryPoint": null,
                  "id": 2477,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_delegate_2437": {
                  "entryPoint": 254,
                  "id": 2437,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_fallback_2456": {
                  "entryPoint": 21,
                  "id": 2456,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_getBeacon_2351": {
                  "entryPoint": null,
                  "id": 2351,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_implementation_2544": {
                  "entryPoint": 101,
                  "id": 2544,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3399": {
                  "entryPoint": 39,
                  "id": 3399,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@functionDelegateCall_3434": {
                  "entryPoint": 290,
                  "id": 3434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAddressSlot_3625": {
                  "entryPoint": 98,
                  "id": 3625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": 83,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 516,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 573,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 662,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 690,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 614,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1643:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14:290:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "483:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "500:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "511:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "493:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "534:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "545:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "530:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "530:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "550:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "523:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "573:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "584:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "569:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "569:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "589:34:43",
                                    "type": "",
                                    "value": "Address: delegate call to non-co"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "644:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "655:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "640:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "640:18:43"
                                  },
                                  {
                                    "hexValue": "6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "660:8:43",
                                    "type": "",
                                    "value": "ntract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "633:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "633:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "633:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "678:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "701:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "686:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "686:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "678:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "460:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "474:4:43",
                            "type": ""
                          }
                        ],
                        "src": "309:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "769:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "779:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "788:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "783:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "848:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "873:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "878:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "869:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "869:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "892:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "897:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "888:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "888:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "882:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "882:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "862:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "862:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "862:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "812:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "806:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "820:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "822:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "831:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "822:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "802:3:43",
                                "statements": []
                              },
                              "src": "798:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "937:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "950:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "955:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "946:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "946:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "964:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "939:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "926:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "929:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "923:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "923:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "920:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "747:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "752:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "757:6:43",
                            "type": ""
                          }
                        ],
                        "src": "716:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1116:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1126:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1146:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1140:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1140:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1130:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1188:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1196:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1184:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1184:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1203:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1208:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1162:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1162:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1224:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1235:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1240:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1231:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1231:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1092:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1097:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1108:3:43",
                            "type": ""
                          }
                        ],
                        "src": "979:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1379:262:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1407:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1389:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1419:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1439:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1433:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1433:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1423:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1466:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1477:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1462:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1462:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1482:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1455:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1455:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1455:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1524:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1532:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1520:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1520:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1541:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1552:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1537:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1537:18:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1557:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1498:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1498:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1498:66:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1573:62:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1589:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1608:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1616:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1604:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1604:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1625:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1621:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1621:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1600:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1600:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1585:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1585:45:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1632:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1581:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1581:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1573:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1348:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1359:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1370:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1258:383:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: delegate call to non-co\")\n        mstore(add(headStart, 96), \"ntract\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040523661000b57005b610013610015565b005b610025610020610065565b6100fe565b565b606061004c83836040518060600160405280602781526020016102e660279139610122565b9392505050565b6001600160a01b03163b151590565b90565b60006100987fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f9919061023d565b905090565b3660008037600080366000845af43d6000803e80801561011d573d6000f35b3d6000fd5b60606001600160a01b0384163b61018f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101aa9190610296565b600060405180830381855af49150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b50915091506101fa828286610204565b9695505050505050565b6060831561021357508161004c565b8251156102235782518084602001fd5b8160405162461bcd60e51b815260040161018691906102b2565b60006020828403121561024f57600080fd5b81516001600160a01b038116811461004c57600080fd5b60005b83811015610281578181015183820152602001610269565b83811115610290576000848401525b50505050565b600082516102a8818460208701610266565b9190910192915050565b60208152600082518060208401526102d1816040850160208701610266565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df584e06121e7575b78856bfb9100e501991c5a1d3346e026d24f463feb20c6364736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH2 0x13 PUSH2 0x15 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25 PUSH2 0x20 PUSH2 0x65 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4C DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2E6 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x122 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98 PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5C60DA1B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9 SWAP2 SWAP1 PUSH2 0x23D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x11D JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x296 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1E5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1FA DUP3 DUP3 DUP7 PUSH2 0x204 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x213 JUMPI POP DUP2 PUSH2 0x4C JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x223 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x186 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2A8 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2D1 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x266 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220DF584E MOD SLT 0x1E PUSH22 0x75B78856BFB9100E501991C5A1D3346E026D24F463FE 0xB2 0xC PUSH4 0x64736F6C PUSH4 0x4300080B STOP CALLER ",
              "sourceMap": "123:220:35:-:0;;;;;;;;2675:11:16;:9;:11::i;:::-;123:220:35;2322:110:16;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;:::-;2322:110::o;6570:198:25:-;6653:12;6684:77;6705:6;6713:4;6684:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6677:84;6570:198;-1:-1:-1;;;6570:198:25:o;1175:320::-;-1:-1:-1;;;;;1465:19:25;;:23;;;1175:320::o;1599:147:28:-;1726:4;1599:147::o;1519:138:17:-;1586:7;1620:12;5043:66:15;5359:46;-1:-1:-1;;;;;5359:46:15;;5288:124;1620:12:17;-1:-1:-1;;;;;1612:36:17;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:45;;1519:138;:::o;948:895:16:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;6954:387:25;7095:12;-1:-1:-1;;;;;1465:19:25;;;7119:69;;;;-1:-1:-1;;;7119:69:25;;511:2:43;7119:69:25;;;493:21:43;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:43;;;633:36;686:19;;7119:69:25;;;;;;;;;7200:12;7214:23;7241:6;-1:-1:-1;;;;;7241:19:25;7261:4;7241:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:67;;;;7283:51;7300:7;7309:10;7321:12;7283:16;:51::i;:::-;7276:58;6954:387;-1:-1:-1;;;;;;6954:387:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;14:290:43:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:43;;214:42;;204:70;;270:1;267;260:12;716:258;788:1;798:113;812:6;809:1;806:13;798:113;;;888:11;;;882:18;869:11;;;862:39;834:2;827:10;798:113;;;929:6;926:1;923:13;920:48;;;964:1;955:6;950:3;946:16;939:27;920:48;;716:258;;;:::o;979:274::-;1108:3;1146:6;1140:13;1162:53;1208:6;1203:3;1196:4;1188:6;1184:17;1162:53;:::i;:::-;1231:16;;;;;979:274;-1:-1:-1;;979:274:43:o;1258:383::-;1407:2;1396:9;1389:21;1370:4;1439:6;1433:13;1482:6;1477:2;1466:9;1462:18;1455:34;1498:66;1557:6;1552:2;1541:9;1537:18;1532:2;1524:6;1520:15;1498:66;:::i;:::-;1625:2;1604:15;-1:-1:-1;;1600:29:43;1585:45;;;;1632:2;1581:54;;1258:383;-1:-1:-1;;1258:383:43:o"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "wrapped-fcash/contracts/wfCashBase.sol": {
        "wfCashBase": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "NotionalV2",
              "outputs": [
                {
                  "internalType": "contract INotionalV2",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH",
              "outputs": [
                {
                  "internalType": "contract IWETH9",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "assetToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyId",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDecodedID",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketIndex",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaturity",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "getToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isETH",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getUnderlyingToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "underlyingToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getfCashId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "hasMatured",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "transferfCash",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "receiver",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "maxImpliedRate",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct IWrappedfCash.RedeemOpts",
                  "name": "data",
                  "type": "tuple"
                }
              ],
              "name": "redeem",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "NotionalV2()": "19b53d35",
              "WETH()": "ad5c4648",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "decimals()": "313ce567",
              "defaultOperators()": "06e48538",
              "getAssetToken()": "f8eef10f",
              "getCurrencyId()": "cf387fed",
              "getDecodedID()": "48d8f98d",
              "getMarketIndex()": "cb803ceb",
              "getMaturity()": "e16695b5",
              "getToken(bool)": "51489551",
              "getUnderlyingToken()": "ee719bc8",
              "getfCashId()": "0558d500",
              "granularity()": "556f0dc7",
              "hasMatured()": "a1093295",
              "initialize(uint16,uint40)": "152b838c",
              "isOperatorFor(address,address)": "d95b6371",
              "mintViaAsset(uint256,uint88,address,uint32)": "0db8481c",
              "mintViaUnderlying(uint256,uint88,address,uint32)": "29cf1405",
              "name()": "06fdde03",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "redeem(uint256,(bool,bool,address,uint32))": "d84878b8",
              "redeemToAsset(uint256,address,uint32)": "3d3192cb",
              "redeemToUnderlying(uint256,address,uint32)": "745d08d9",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "wrapped-fcash/contracts/wfCashERC4626.sol": {
        "wfCashERC4626": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract INotionalV2",
                  "name": "_notional",
                  "type": "address"
                },
                {
                  "internalType": "contract IWETH9",
                  "name": "_weth",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "NotionalV2",
              "outputs": [
                {
                  "internalType": "contract INotionalV2",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH",
              "outputs": [
                {
                  "internalType": "contract IWETH9",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "asset",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "convertToAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "convertToShares",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "assetToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyId",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDecodedID",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketIndex",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaturity",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "getToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isETH",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getUnderlyingToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "underlyingToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getfCashId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "hasMatured",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "maxDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "maxMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "redeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "transferfCash",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "receiver",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "maxImpliedRate",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct IWrappedfCash.RedeemOpts",
                  "name": "opts",
                  "type": "tuple"
                }
              ],
              "name": "redeem",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2664": {
                  "entryPoint": null,
                  "id": 2664,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_5162": {
                  "entryPoint": null,
                  "id": 5162,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5582": {
                  "entryPoint": null,
                  "id": 5582,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_6315": {
                  "entryPoint": null,
                  "id": 6315,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_isConstructor_72": {
                  "entryPoint": 296,
                  "id": 72,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@isContract_1560": {
                  "entryPoint": 326,
                  "id": 1560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_INotionalV2_$7474t_contract$_IWETH9_$7263_fromMemory": {
                  "entryPoint": 366,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "validator_revert_contract_INotionalV2": {
                  "entryPoint": 341,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1026:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "72:86:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "136:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "145:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "148:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "138:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "138:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "138:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "95:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "106:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "121:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "126:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "117:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "117:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "130:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "113:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "113:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "102:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "102:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "92:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "92:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "85:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "85:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "82:70:43"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_INotionalV2",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "61:5:43",
                            "type": ""
                          }
                        ],
                        "src": "14:144:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "296:313:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "342:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "351:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "354:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "344:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "344:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "344:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "317:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "326:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "313:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "313:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "338:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "309:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "309:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "306:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "367:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "386:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "380:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "380:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "371:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "443:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_INotionalV2",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:37:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "405:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "405:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "458:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "468:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "458:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "482:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "507:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "518:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "503:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "503:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "497:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "497:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "486:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "569:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_INotionalV2",
                                  "nodeType": "YulIdentifier",
                                  "src": "531:37:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "531:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "531:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "586:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "596:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "586:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_INotionalV2_$7474t_contract$_IWETH9_$7263_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "254:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "265:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "277:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "285:6:43",
                            "type": ""
                          }
                        ],
                        "src": "163:446:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "788:236:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "816:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "798:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "798:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "798:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "839:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "850:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "855:2:43",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "828:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "828:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "828:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "889:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "874:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "874:18:43"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "894:34:43",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "867:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "949:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "960:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "945:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "945:18:43"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "965:16:43",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "938:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "938:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "938:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "991:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1003:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1014:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "991:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "765:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "779:4:43",
                            "type": ""
                          }
                        ],
                        "src": "614:410:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function validator_revert_contract_INotionalV2(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_INotionalV2_$7474t_contract$_IWETH9_$7263_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_INotionalV2(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_INotionalV2(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b506040516200621c3803806200621c83398101604081905262000034916200016e565b81818181600060019054906101000a900460ff166200005a5760005460ff161562000064565b6200006462000128565b620000cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000ef576000805461ffff19166101011790555b6001600160a01b03808416608052821660a052801562000115576000805461ff00191690555b5050600160665550620001ad9350505050565b600062000140306200014660201b620022291760201c565b15905090565b6001600160a01b03163b151590565b6001600160a01b03811681146200016b57600080fd5b50565b600080604083850312156200018257600080fd5b82516200018f8162000155565b6020840151909250620001a28162000155565b809150509250929050565b60805160a051615f8c62000290600039600081816105b601528181611125015281816125ec0152818161262a01528181613b410152613bbf0152600081816103dc015281816107ef01528181610a5f01528181610b6301528181610cc201528181610f2101528181610f860152818161122d015281816119a601528181611bb101528181611d1d01528181611da301528181611e39015281816120090152818161227001528181612312015281816126af015281816127800152818161350f015281816135aa015281816136a80152818161455801526146a30152615f8c6000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063959b8c3f1161019d578063cf387fed116100e9578063ee719bc8116100a2578063f8eef10f1161007c578063f8eef10f14610763578063fad8b32a1461077a578063fc673c4f1461078d578063fe9d9303146107a057600080fd5b8063ee719bc8146106fd578063ef8b30f714610724578063f23a6e611461073757600080fd5b8063cf387fed14610652578063d84878b81461066d578063d905777e14610680578063d95b637114610693578063dd62ed3e146106a6578063e16695b5146106df57600080fd5b8063b3d7f6b911610156578063c63d75b611610130578063c63d75b614610611578063c6e6f59214610624578063cb803ceb14610637578063ce96cb771461063f57600080fd5b8063b3d7f6b9146105d8578063b460af94146105eb578063ba087652146105fe57600080fd5b8063959b8c3f1461056857806395d89b411461057b5780639bd9bbc614610583578063a109329514610596578063a9059cbb1461059e578063ad5c4648146105b157600080fd5b8063313ce5671161025c57806351489551116102155780636e553f65116101ef5780636e553f651461050657806370a0823114610519578063745d08d91461054257806394bf804d1461055557600080fd5b806351489551146104ba578063556f0dc7146104ec57806362ad1b83146104f357600080fd5b8063313ce5671461043c57806338d52e0f146104515780633d3192cb14610459578063402d267d1461046c57806348d8f98d1461047f5780634cdad506146104a757600080fd5b80630a28a477116102c957806318160ddd116102a357806318160ddd146103cf57806319b53d35146103d757806323b872dd1461041657806329cf14051461042957600080fd5b80630a28a477146103945780630db8481c146103a7578063152b838c146103bc57600080fd5b806301e1d114146103115780630558d5001461032c57806306e485381461033457806306fdde031461034957806307a2d13a1461035e578063095ea7b314610371575b600080fd5b6103196107b3565b6040519081526020015b60405180910390f35b606554610319565b61033c6108e0565b6040516103239190614b90565b610351610942565b6040516103239190614c35565b61031961036c366004614c48565b6109cb565b61038461037f366004614c79565b610adc565b6040519015158152602001610323565b6103196103a2366004614c48565b610af4565b6103ba6103b5366004614ccc565b610be9565b005b6103ba6103ca366004614d42565b610bfd565b603454610319565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610323565b610384610424366004614d7b565b610fc9565b6103ba610437366004614ccc565b6110f7565b60085b60405160ff9091168152602001610323565b6103fe611105565b6103ba610467366004614dbc565b61114c565b61031961047a366004614dfe565b61118b565b6104876111a9565b6040805161ffff909316835264ffffffffff909116602083015201610323565b6103196104b5366004614c48565b6111cb565b6104cd6104c8366004614e29565b6112ac565b604080516001600160a01b039093168352901515602083015201610323565b6001610319565b6103ba610501366004614f54565b6112e4565b610319610514366004614fe6565b611320565b610319610527366004614dfe565b6001600160a01b031660009081526033602052604090205490565b6103ba610550366004614dbc565b6113da565b610319610563366004614fe6565b611419565b6103ba610576366004614dfe565b611477565b610351611595565b6103ba61059136600461500b565b6115a4565b6103846115c2565b6103846105ac366004614c79565b6115db565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6103196105e6366004614c48565b61168e565b6103196105f9366004615063565b6116d8565b61031961060c366004615063565b61175f565b61031961061f366004614dfe565b6118ee565b610319610632366004614c48565b61191b565b61043f611a25565b61031961064d366004614dfe565b611a5d565b61065a611a7f565b60405161ffff9091168152602001610323565b6103ba61067b36600461509a565b611a9e565b61031961068e366004614dfe565b611acc565b6103846106a136600461513e565b611aea565b6103196106b436600461513e565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b6106e7611b8b565b60405164ffffffffff9091168152602001610323565b610705611ba9565b604080516001600160a01b039093168352602083019190915201610323565b610319610732366004614c48565b611c91565b61074a61074536600461516c565b611cdb565b6040516001600160e01b03199091168152602001610323565b61076b612001565b6040516103239392919061522b565b6103ba610788366004614dfe565b6120bc565b6103ba61079b366004615260565b6121d8565b6103ba6107ae3660046152df565b61220a565b60006107bd6115c2565b156107cf576107ca612238565b905090565b60006107d9611ba9565b9150506000806107e76111a9565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c52c43e1848461082760345490565b6040516001600160e01b031960e086901b16815261ffff909316600484015264ffffffffff909116602483015260448201524260648201526000608482015260a401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190615325565b905060006305f5e1006108bd8684615354565b6108c791906153ef565b905060008112156108d757600080fd5b95945050505050565b6060603780548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161091a575b5050505050905090565b6060603580546109519061541d565b80601f016020809104026020016040519081016040528092919081815260200182805461097d9061541d565b80156109385780601f1061099f57610100808354040283529160200191610938565b820191906000526020600020905b8154815290600101906020018083116109ad57509395945050505050565b60006109d56115c2565b15610a0a5760006109e4612238565b90506109ef60345490565b6109f98285615452565b610a039190615471565b9392505050565b600080610a156111a9565b60405163aaae47b560e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482018190524260848301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aaae47b59060a401608060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190615496565b5091979650505050505050565b919050565b600033610aea8185856123bd565b5060019392505050565b6000610afe6115c2565b15610b1257610b0c8261191b565b92915050565b600080610b1d6111a9565b60405163bac9e8b160e01b815261ffff831660048201526024810187905264ffffffffff8216604482015260006064820152426084820152600160a482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bac9e8b19060c401606060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd691906154d3565b50506001600160581b0316949350505050565b610bf78484848460006124e4565b50505050565b600054610100900460ff16610c185760005460ff1615610c1c565b303b155b610c845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff16158015610ca6576000805461ffff19166101011790555b60405163d4ccb0ed60e01b815261ffff841660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d4ccb0ed90602401600060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d3991908101906155a1565b805190915060ff16610d805760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642063757272656e637960801b6044820152606401610c7b565b8051610d979060ff1664ffffffffff85164261283c565b610dd65760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964206d6174757269747960801b6044820152606401610c7b565b610ded61ffff851664ffffffffff8516600161288c565b6065556000610dfa611ba9565b5090506000610e07612001565b50909150600090506001600160a01b03831615610e8957826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8491908101906156d2565b610ea6565b6040518060400160405280600381526020016208aa8960eb1b8152505b90506000610eba8764ffffffffff166128e7565b9050610f128282604051602001610ed292919061573f565b6040516020818303038152906040528383604051602001610ef4929190615792565b60408051601f198184030181526000835260208301909152906129ec565b610f486001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b836001600160a01b0316836001600160a01b031614158015610f7257506001600160a01b03841615155b15610fad57610fad6001600160a01b0385167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b50505050508015610fc4576000805461ff00191690555b505050565b60006001600160a01b038316610ff15760405162461bcd60e51b8152600401610c7b906157dc565b6001600160a01b0384166110565760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610c7b565b6000339050611087818686866040518060200160405280600081525060405180602001604052806000815250612b66565b611092858285612c8e565b6110be818686866040518060200160405280600081525060405180602001604052806000815250612d1a565b6110ec8186868660405180602001604052806000815250604051806020016040528060008152506000612e80565b506001949350505050565b610bf78484848460016124e4565b600080600061111460016112ac565b91509150806111235781611145565b7f00000000000000000000000000000000000000000000000000000000000000005b9250505090565b610fc4836040518060800160405280600015158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b60006111956115c2565b6111a157600019610b0c565b600092915050565b6000806111c1606554603081901c91600882901c9190565b5090939092509050565b60006111d56115c2565b156111e357610b0c826109cb565b6000806111ee6111a9565b60405163416a158760e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482015242608482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063416a15879060a401608060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190615496565b50919695505050505050565b60008082156112c5576112bd611ba9565b5091506112d3565b6112cd612001565b50909250505b50916001600160a01b038316159150565b6112ee3386611aea565b61130a5760405162461bcd60e51b8152600401610c7b90615820565b61131985858585856001613045565b5050505050565b600061132b8261118b565b8311156113685760405162461bcd60e51b815260206004820152600b60248201526a13585e0811195c1bdcda5d60aa1b6044820152606401610c7b565b600061137384611c91565b905061138c8461138283613128565b85600060016124e4565b60408051858152602081018390526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a39392505050565b610fc4836040518060800160405280600115158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b6000806114258461168e565b90506114348161138286613128565b60408051828152602081018690526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791016113cb565b336001600160a01b03821614156114dc5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561152d57336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916905561155c565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060603680546109519061541d565b610fc433848484604051806020016040528060008152506001613045565b6000426115cd611b8b565b64ffffffffff161115905090565b60006001600160a01b0383166116035760405162461bcd60e51b8152600401610c7b906157dc565b6000339050611634818286866040518060200160405280600081525060405180602001604052806000815250612b66565b611660818286866040518060200160405280600081525060405180602001604052806000815250612d1a565b610aea8182868660405180602001604052806000815250604051806020016040528060008152506000612e80565b60006116986115c2565b156116cf5760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c826109cb565b6000806116e485610af4565b9050336001600160a01b0384161461170157611701833383612c8e565b61170c818585613142565b60408051868152602081018390526001600160a01b03808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4949350505050565b60008061176a611105565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa1580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190615325565b9050336001600160a01b038416146117f3576117f3833387612c8e565b6117fe858585613142565b6000611808611105565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa158015611850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118749190615325565b90506000611882838361586c565b9050846001600160a01b0316866001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db848b6040516118dc929190918252602082015260400190565b60405180910390a49695505050505050565b60006118f86115c2565b611909576001600160581b0361190c565b60005b6001600160581b031692915050565b60006119256115c2565b1561194a576000611934612238565b90508061194060345490565b6109f99085615452565b6000806119556111a9565b604051631f0750c160e31b815261ffff831660048201526024810187905264ffffffffff82166044820152600060648201819052426084830152600160a48301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f83a86089060c401606060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906154d3565b50506001600160581b031695945050505050565b6000806000611a446007611a37611b8b565b64ffffffffff16426131a7565b915091508015611a575760009250505090565b50919050565b6001600160a01b038116600090815260336020526040812054610b0c906109cb565b6000611a96606554603081901c91600882901c9190565b509092915050565b600081604051602001611ab19190615883565b6040516020818303038152906040529050610fc4838261220a565b6001600160a01b038116600090815260336020526040812054610b0c565b6000816001600160a01b0316836001600160a01b03161480611b5557506001600160a01b03831660009081526038602052604090205460ff168015611b5557506001600160a01b038083166000908152603a602090815260408083209387168352929052205460ff16155b80610a0357506001600160a01b0380831660009081526039602090815260408083209387168352929052205460ff169392505050565b6000611ba2606554603081901c91600882901c9190565b5092915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e611be6611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061594f565b9092509050600482606001516004811115611c6757611c67615215565b1415611c7f5750805160409091015190939092509050565b80516040909101519094909350915050565b6000611c9b6115c2565b15611cd25760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c8261191b565b600060026066541415611d005760405162461bcd60e51b8152600401610c7b90615985565b60026066556000611d1060655490565b9050336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611d4957508086145b8015611d555750600085135b611d8b5760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610c7b565b60405163b0de221760e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0de22179060240160a060405180830381865afa158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1691906159bc565b604051635a9b7fdb60e11b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b536ffb690602401600060405180830381865afa158015611e80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ea89190810190615a72565b60208301519091506001600160f81b031916158015611ec8575080516001145b8015611f37575082611f3582600081518110611ee657611ee6615b5b565b60200260200101516000015183600081518110611f0557611f05615b5b565b60200260200101516020015184600081518110611f2457611f24615b5b565b60200260200101516040015161288c565b145b611f4057600080fd5b6060808a6001600160a01b03168c6001600160a01b03161415611f9c5787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450611fd692505050565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b611fe48b8a848460006132f0565b505060016066555063f23a6e6160e01b9998505050505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e61203e611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a2919061594f565b508051604082015160609092015190969195509350915050565b6001600160a01b03811633141561211f5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561217357336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561219f565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6121e23385611aea565b6121fe5760405162461bcd60e51b8152600401610c7b90615820565b610bf784848484613439565b61222533838360405180602001604052806000815250613439565b5050565b6001600160a01b03163b151590565b600080612243611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122db9190615b71565b5050604051631baefc5d60e21b815261ffff8416600482015260248101829052600160448201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636ebbf17490606401602060405180830381865afa158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190615325565b905060008113610a035760405162461bcd60e51b815260206004820152600b60248201526a4d75737420536574746c6560a81b6044820152606401610c7b565b6001600160a01b0383166124215760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c7b565b6001600160a01b0382166124835760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c7b565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260665414156125075760405162461bcd60e51b8152600401610c7b90615985565b60026066556125146115c2565b156125515760405162461bcd60e51b815260206004820152600d60248201526c1990d85cda081b585d1d5c9959609a1b6044820152606401610c7b565b60008061255d836112ac565b915091506000816125d5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d09190615325565b6125d7565b475b90508115612734576126146001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b61375b565b604051632e1a7d4d60e01b8152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561267657600080fd5b505af115801561268a573d6000803e3d6000fd5b5050505060006126ab61269b611a7f565b6126a3611a25565b8b8b8a613793565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630276b64b8a30846040518463ffffffff1660e01b81526004016126fc929190615bda565b6000604051808303818588803b15801561271557600080fd5b505af1158015612729573d6000803e3d6000fd5b5050505050506127eb565b6127496001600160a01b03841633308b61375b565b6000612766612756611a7f565b61275e611a25565b8a8989613978565b604051630541f52760e41b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063541f5270906127b79030908590600401615caa565b600060405180830381600087803b1580156127d157600080fd5b505af11580156127e5573d6000803e3d6000fd5b50505050505b61282086886001600160581b0316604051806020016040528060008152506040518060200160405280600081525060006132f0565b61282c83338484613ab4565b5050600160665550505050505050565b60008061284883613c0c565b9050600061285586613c76565b61285f9083615d2e565b90508085111561287457600092505050610a03565b60006128808587613e4e565b98975050505050505050565b6000613fff84111561289d57600080fd5b64ffffffffff8311156128af57600080fd5b60088211156128bd57600080fd5b5067ffff000000000000603084901b1665ffffffffff00600884901b161760ff8216179392505050565b60608161290b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612935578061291f81615d46565b915061292e9050600a83615471565b915061290f565b6000816001600160401b0381111561294f5761294f614e46565b6040519080825280601f01601f191660200182016040528015612979576020820181803683370190505b5090505b84156129e45761298e60018361586c565b915061299b600a86615d61565b6129a6906030615d2e565b60f81b8183815181106129bb576129bb615b5b565b60200101906001600160f81b031916908160001a9053506129dd600a86615471565b945061297d565b949350505050565b600054610100900460ff16612a135760405162461bcd60e51b8152600401610c7b90615d75565b610fc4838383614039565b801580612a985750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190615325565b155b612b035760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610c7b565b6040516001600160a01b038316602482015260448101829052610fc490849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614223565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b9190615dc0565b90506001600160a01b03811615612c8557604051633ad5cbc160e11b81526001600160a01b038216906375ab978290612c52908a908a908a908a908a908a90600401615ddd565b600060405180830381600087803b158015612c6c57600080fd5b505af1158015612c80573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b038381166000908152603b60209081526040808320938616835292905220546000198114610bf75781811015612d0d5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610c7b565b610bf784848484036123bd565b6001600160a01b03851660009081526033602052604090205483811015612d935760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610c7b565b6001600160a01b03808716600090815260336020526040808220878503905591871681529081208054869290612dca908490615d2e565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051612e2293929190615e2a565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612e6f91815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190615dc0565b90506001600160a01b03811615612fa1576040516223de2960e01b81526001600160a01b038216906223de2990612f6a908b908b908b908b908b908b90600401615ddd565b600060405180830381600087803b158015612f8457600080fd5b505af1158015612f98573d6000803e3d6000fd5b5050505061303b565b811561303b576001600160a01b0386163b1561303b5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401610c7b565b5050505050505050565b6001600160a01b0386166130a65760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b6001600160a01b0385166130fc5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f20616464726573736044820152606401610c7b565b3361310b818888888888612b66565b613119818888888888612d1a565b612c8581888888888888612e80565b60006001600160581b0382111561313e57600080fd5b5090565b6040805160808101825260018152600060208083018290526001600160a01b03861683850152606083018290529251909261317e929101615883565b60408051601f1981840301815260208301909152600082529150610bf790839086908490613439565b600080600085116131f25760405162461bcd60e51b815260206004820152601560248201527410d1ce881b9bc81b585c9ad95d1cc81b1a5cdd1959605a1b6044820152606401610c7b565b600785111561323c5760405162461bcd60e51b815260206004820152601660248201527510d1ce881b585c9ad95d081a5b99195e08189bdd5b9960521b6044820152606401610c7b565b600061324784613c0c565b905060015b8681116132a957600061325e82613c76565b6132689084615d2e565b90508681141561328057509250600091506132e89050565b8681111561329657509250600191506132e89050565b50806132a181615d46565b91505061324c565b5060405162461bcd60e51b815260206004820152601360248201527210d1ce881b9bc81b585c9ad95d08199bdd5b99606a1b6044820152606401610c7b565b935093915050565b6001600160a01b0385166133465760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c7b565b6000339050846034600082825461335d9190615d2e565b90915550506001600160a01b0386166000908152603360205260408120805487929061338a908490615d2e565b909155506133a090508160008888888888612e80565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516133e793929190615e2a565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050505050565b6002606654141561345c5760405162461bcd60e51b8152600401610c7b90615985565b6002606655600061346c60345490565b90506000838060200190518101906134849190615e5f565b60408101519091506001600160a01b03166134e15760405162461bcd60e51b815260206004820152601860248201527f5265636569766572206973207a65726f206164647265737300000000000000006044820152606401610c7b565b6134ed868686866142f5565b6134f56115c2565b1561369c5760405163f667f89760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f667f89790602401600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b50505050600061357d611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156135f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136159190615b71565b50509050806000126136615760405162461bcd60e51b81526020600482015260156024820152744e6567617469766520436173682042616c616e636560581b6044820152606401610c7b565b60008461366e8984615452565b6136789190615471565b905061369383856040015161368c84613128565b875161449e565b5050505061374e565b806020015115613734577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f242432a3083604001516136e460655490565b89896040518663ffffffff1660e01b8152600401613706959493929190615ee3565b600060405180830381600087803b15801561372057600080fd5b505af1158015613693573d6000803e3d6000fd5b61374c816040015186836000015184606001516145da565b505b5050600160665550505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610bf79085906323b872dd60e01b90608401612b2f565b604080516001808252818301909252606091816020015b6137b2614a60565b8152602001906001900390816137aa5790505090506002816000815181106137dc576137dc615b5b565b60200260200101516000019060068111156137f9576137f9615215565b9081600681111561380c5761380c615215565b81525050858160008151811061382457613824615b5b565b60200260200101516020019061ffff16908161ffff1681525050838160008151811061385257613852615b5b565b6020026020010151604001818152505060018160008151811061387757613877615b5b565b602002602001015160800190151590811515815250506001816000815181106138a2576138a2615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106138e9576138e9615b5b565b602090810291909101015160c0015263ffffffff60781b607883901b16600160981b600160f01b03609885901b1660ff60f01b60f088901b1660f860005b60ff16901b17171760001b8160008151811061394557613945615b5b565b602002602001015160c0015160008151811061396357613963615b5b565b60200260200101818152505095945050505050565b604080516001808252818301909252606091816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161398f57905050905085816000815181106139d4576139d4615b5b565b60200260200101516000019061ffff16908161ffff16815250508181600081518110613a0257613a02615b5b565b602090810291909101810151911515910152604080516001808252818301909252908160200160208202803683370190505081600081518110613a4757613a47615b5b565b602090810291909101015160400152805160f086901b60ff60f01b16609886901b600160981b600160f01b031617607885901b63ffffffff60781b1617908290600090613a9657613a96615b5b565b60200260200101516040015160008151811061396357613963615b5b565b60008083613b29576040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190615325565b613b2b565b475b9050613b37838261586c565b91508315613bef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b9a57600080fd5b505af1158015613bae573d6000803e3d6000fd5b50613bea9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915087905084614725565b613c03565b613c036001600160a01b0387168684614725565b50949350505050565b6000613c1c620151806006615452565b613c27906005615452565b613c32906003615452565b821015613c3e57600080fd5b613c4c620151806006615452565b613c57906005615452565b613c62906003615452565b613c6c9083615d61565b610b0c908361586c565b60008160011415613ca557613c8f620151806006615452565b613c9a906005615452565b610b0c906003615452565b8160021415613cdd57613cbc620151806006615452565b613cc7906005615452565b613cd2906003615452565b610b0c906002615452565b8160031415613d1557613cf4620151806006615452565b613cff906005615452565b613d0a906003615452565b610b0c906004615452565b8160041415613d4d57613d2c620151806006615452565b613d37906005615452565b613d42906003615452565b613cd2906004615452565b8160051415613d9057613d64620151806006615452565b613d6f906005615452565b613d7a906003615452565b613d85906004615452565b610b0c906005615452565b8160061415613dd357613da7620151806006615452565b613db2906005615452565b613dbd906003615452565b613dc8906004615452565b610b0c90600a615452565b8160071415613e1657613dea620151806006615452565b613df5906005615452565b613e00906003615452565b613e0b906004615452565b610b0c906014615452565b60405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610c7b565b6000806000613e5c85614755565b9050613e6b6201518085615d61565b15613e7d576000809250925050614032565b838110613e91576000809250925050614032565b600062015180613ea1838761586c565b613eab9190615471565b9050605a8111613ec2579250600191506140329050565b6101688111613f3757600062015180613edc816006615452565b613ee69085615d61565b613ef09190615471565b613efb605a8461586c565b613f059190615d2e565b9050613f12600682615471565b613f1d90605a615d2e565b613f28600683615d61565b60001494509450505050614032565b6108708111613fa957600062015180613f51816006615452565b613f5c906005615452565b613f669085615d61565b613f709190615471565b613f7c6101688461586c565b613f869190615d2e565b9050613f93601e82615471565b613f9e906087615d2e565b613f28601e83615d61565b611de2811161402657600062015180613fc3816006615452565b613fce906005615452565b613fd9906003615452565b613fe39085615d61565b613fed9190615471565b613ff96108708461586c565b6140039190615d2e565b9050614010605a82615471565b61401b9060c3615d2e565b613f28605a83615d61565b61010060009350935050505b9250929050565b600054610100900460ff166140605760405162461bcd60e51b8152600401610c7b90615d75565b8251614073906035906020860190614aa6565b508151614087906036906020850190614aa6565b50805161409b906037906020840190614b26565b5060005b8151811015614104576001603860008484815181106140c0576140c0615b5b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806140fc81615d46565b91505061409f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b15801561417e57600080fd5b505af1158015614192573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561420f57600080fd5b505af1158015612c85573d6000803e3d6000fd5b6000614278826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166147749092919063ffffffff16565b805190915015610fc457808060200190518101906142969190615f1d565b610fc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c7b565b6001600160a01b0384166143565760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b3361436681866000878787612b66565b6001600160a01b038516600090815260336020526040902054848110156143db5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b6064820152608401610c7b565b6001600160a01b038616600090815260336020526040812086830390556034805487929061440a90849061586c565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161445893929190615e2a565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001613429565b60008060006144ac846112ac565b91509150600081614524576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156144fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451f9190615325565b614526565b475b604051625e665d60e31b815261ffff8a1660048201526001600160581b038816602482015286151560448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302f332e8906064016020604051808303816000875af11580156145a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145cd9190615325565b5061288083888484613ab4565b60008060006145e8856112ac565b91509150600081614660576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015614637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465b9190615325565b614662565b475b90506000614689614671611a7f565b614679611a25565b6146828b613128565b898b614783565b604051630276b64b60e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630276b64b906146da9030908590600401615bda565b600060405180830381600087803b1580156146f457600080fd5b505af1158015614708573d6000803e3d6000fd5b50505050614718848a8585613ab4565b9998505050505050505050565b6040516001600160a01b038316602482015260448101829052610fc490849063a9059cbb60e01b90606401612b2f565b60006201518082101561476757600080fd5b613c6c6201518083615d61565b60606129e484846000856148f6565b604080516001808252818301909252606091816020015b6147a2614a60565b81526020019060019003908161479a5790505090506000816000815181106147cc576147cc615b5b565b60200260200101516000019060068111156147e9576147e9615215565b908160068111156147fc576147fc615215565b81525050858160008151811061481457614814615b5b565b60200260200101516020019061ffff16908161ffff168152505060018160008151811061484357614843615b5b565b60200260200101516080019015159081151581525050818160008151811061486d5761486d615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106148b4576148b4615b5b565b602090810291909101015160c0015263ffffffff60781b607884901b16600160981b600160f01b03609886901b1660ff60f01b60f088901b1660f86001613927565b6060824710156149575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c7b565b6001600160a01b0385163b6149ae5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c7b565b600080866001600160a01b031685876040516149ca9190615f3a565b60006040518083038185875af1925050503d8060008114614a07576040519150601f19603f3d011682016040523d82523d6000602084013e614a0c565b606091505b5091509150614a1c828286614a27565b979650505050505050565b60608315614a36575081610a03565b825115614a465782518084602001fd5b8160405162461bcd60e51b8152600401610c7b9190614c35565b6040805160e081019091528060008152602001600061ffff1681526020016000815260200160008152602001600015158152602001600015158152602001606081525090565b828054614ab29061541d565b90600052602060002090601f016020900481019282614ad45760008555614b1a565b82601f10614aed57805160ff1916838001178555614b1a565b82800160010185558215614b1a579182015b82811115614b1a578251825591602001919060010190614aff565b5061313e929150614b7b565b828054828255906000526020600020908101928215614b1a579160200282015b82811115614b1a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614b46565b5b8082111561313e5760008155600101614b7c565b6020808252825182820181905260009190848201906040850190845b81811015614bd15783516001600160a01b031683529284019291840191600101614bac565b50909695505050505050565b60005b83811015614bf8578181015183820152602001614be0565b83811115610bf75750506000910152565b60008151808452614c21816020860160208601614bdd565b601f01601f19169290920160200192915050565b602081526000610a036020830184614c09565b600060208284031215614c5a57600080fd5b5035919050565b6001600160a01b0381168114614c7657600080fd5b50565b60008060408385031215614c8c57600080fd5b8235614c9781614c61565b946020939093013593505050565b6001600160581b0381168114614c7657600080fd5b63ffffffff81168114614c7657600080fd5b60008060008060808587031215614ce257600080fd5b843593506020850135614cf481614ca5565b92506040850135614d0481614c61565b91506060850135614d1481614cba565b939692955090935050565b61ffff81168114614c7657600080fd5b64ffffffffff81168114614c7657600080fd5b60008060408385031215614d5557600080fd5b8235614d6081614d1f565b91506020830135614d7081614d2f565b809150509250929050565b600080600060608486031215614d9057600080fd5b8335614d9b81614c61565b92506020840135614dab81614c61565b929592945050506040919091013590565b600080600060608486031215614dd157600080fd5b833592506020840135614de381614c61565b91506040840135614df381614cba565b809150509250925092565b600060208284031215614e1057600080fd5b8135610a0381614c61565b8015158114614c7657600080fd5b600060208284031215614e3b57600080fd5b8135610a0381614e1b565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e7f57614e7f614e46565b60405290565b60405160c081016001600160401b0381118282101715614e7f57614e7f614e46565b604051601f8201601f191681016001600160401b0381118282101715614ecf57614ecf614e46565b604052919050565b60006001600160401b03821115614ef057614ef0614e46565b50601f01601f191660200190565b600082601f830112614f0f57600080fd5b8135614f22614f1d82614ed7565b614ea7565b818152846020838601011115614f3757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614f6c57600080fd5b8535614f7781614c61565b94506020860135614f8781614c61565b93506040860135925060608601356001600160401b0380821115614faa57600080fd5b614fb689838a01614efe565b93506080880135915080821115614fcc57600080fd5b50614fd988828901614efe565b9150509295509295909350565b60008060408385031215614ff957600080fd5b823591506020830135614d7081614c61565b60008060006060848603121561502057600080fd5b833561502b81614c61565b92506020840135915060408401356001600160401b0381111561504d57600080fd5b61505986828701614efe565b9150509250925092565b60008060006060848603121561507857600080fd5b83359250602084013561508a81614c61565b91506040840135614df381614c61565b60008082840360a08112156150ae57600080fd5b833592506080601f19820112156150c457600080fd5b50604051608081018181106001600160401b03821117156150e7576150e7614e46565b60405260208401356150f881614e1b565b8152604084013561510881614e1b565b6020820152606084013561511b81614c61565b6040820152608084013561512e81614cba565b6060820152919491935090915050565b6000806040838503121561515157600080fd5b823561515c81614c61565b91506020830135614d7081614c61565b60008060008060008060a0878903121561518557600080fd5b863561519081614c61565b955060208701356151a081614c61565b9450604087013593506060870135925060808701356001600160401b03808211156151ca57600080fd5b818901915089601f8301126151de57600080fd5b8135818111156151ed57600080fd5b8a60208285010111156151ff57600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038416815260208101839052606081016005831061525257615252615215565b826040830152949350505050565b6000806000806080858703121561527657600080fd5b843561528181614c61565b93506020850135925060408501356001600160401b03808211156152a457600080fd5b6152b088838901614efe565b935060608701359150808211156152c657600080fd5b506152d387828801614efe565b91505092959194509250565b600080604083850312156152f257600080fd5b8235915060208301356001600160401b0381111561530f57600080fd5b61531b85828601614efe565b9150509250929050565b60006020828403121561533757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b038184138284138082168684048611161561537a5761537a61533e565b600160ff1b60008712828116878305891216156153995761539961533e565b600087129250878205871284841616156153b5576153b561533e565b878505871281841616156153cb576153cb61533e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b6000826153fe576153fe6153d9565b600160ff1b8214600019841416156154185761541861533e565b500590565b600181811c9082168061543157607f821691505b60208210811415611a5757634e487b7160e01b600052602260045260246000fd5b600081600019048311821515161561546c5761546c61533e565b500290565b600082615480576154806153d9565b500490565b805160ff81168114610ad757600080fd5b600080600080608085870312156154ac57600080fd5b84519350602085015192506154c360408601615485565b6060959095015193969295505050565b6000806000606084860312156154e857600080fd5b83516154f381614ca5565b925061550160208501615485565b9150604084015190509250925092565b60006001600160401b0382111561552a5761552a614e46565b5060051b60200190565b600082601f83011261554557600080fd5b81516020615555614f1d83615511565b82815260059290921b8401810191818101908684111561557457600080fd5b8286015b848110156155965761558981615485565b8352918301918301615578565b509695505050505050565b6000602082840312156155b357600080fd5b81516001600160401b03808211156155ca57600080fd5b9083019061016082860312156155df57600080fd5b6155e7614e5c565b6155f083615485565b81526155fe60208401615485565b602082015261560f60408401615485565b604082015261562060608401615485565b606082015261563160808401615485565b608082015261564260a08401615485565b60a082015261565360c08401615485565b60c082015261566460e08401615485565b60e0820152610100615677818501615485565b90820152610120838101518381111561568f57600080fd5b61569b88828701615534565b82840152505061014080840151838111156156b557600080fd5b6156c188828701615534565b918301919091525095945050505050565b6000602082840312156156e457600080fd5b81516001600160401b038111156156fa57600080fd5b8201601f8101841361570b57600080fd5b8051615719614f1d82614ed7565b81815285602083850101111561572e57600080fd5b6108d7826020830160208601614bdd565b682bb930b83832b2103360b91b815260008351615763816009850160208801614bdd565b6201020160ed1b600991840191820152835161578681600c840160208801614bdd565b01600c01949350505050565b613bb360f11b8152600083516157af816002850160208801614bdd565b601d60f91b60029184019182015283516157d0816003840160208801614bdd565b01600301949350505050565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b60008282101561587e5761587e61533e565b500390565b8151151581526020808301511515908201526040808301516001600160a01b03169082015260609182015163ffffffff169181019190915260800190565b600060a082840312156158d357600080fd5b60405160a081018181106001600160401b03821117156158f5576158f5614e46565b8060405250809150825161590881614c61565b8152602083015161591881614e1b565b60208201526040838101519082015260608301516005811061593957600080fd5b6060820152608092830151920191909152919050565b600080610140838503121561596357600080fd5b61596d84846158c1565b915061597c8460a085016158c1565b90509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060a082840312156159ce57600080fd5b60405160a081018181106001600160401b03821117156159f0576159f0614e46565b60405282516159fe81614d2f565b815260208301516001600160f81b031981168114615a1b57600080fd5b6020820152615a2c60408401615485565b60408201526060830151615a3f81614d1f565b606082015260808301516dffffffffffffffffffffffffffff1981168114615a6657600080fd5b60808201529392505050565b60006020808385031215615a8557600080fd5b82516001600160401b03811115615a9b57600080fd5b8301601f81018513615aac57600080fd5b8051615aba614f1d82615511565b81815260c09182028301840191848201919088841115615ad957600080fd5b938501935b83851015615b4f5780858a031215615af65760008081fd5b615afe614e85565b85518152868601518782015260408087015190820152606080870151908201526080808701519082015260a08087015160038110615b3c5760008081fd5b9082015283529384019391850191615ade565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215615b8657600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015615bcf57815187529582019590820190600101615bb3565b509495945050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57605f198a8403018552815160e0815160078110615c3857615c38615215565b85528188015161ffff1688860152898201518a860152888201518986015260808083015115159086015260a08083015115159086015260c091820151918501819052615c8681860183615b9f565b968801969450505090850190600101615c11565b50909a9950505050505050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57898303605f190185528151805161ffff16845286810151151587850152880151888401889052615d1b88850182615b9f565b9587019593505090850190600101615ce1565b60008219821115615d4157615d4161533e565b500190565b6000600019821415615d5a57615d5a61533e565b5060010190565b600082615d7057615d706153d9565b500690565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615dd257600080fd5b8151610a0381614c61565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090615e1890830185614c09565b82810360a08401526147188185614c09565b838152606060208201526000615e436060830185614c09565b8281036040840152615e558185614c09565b9695505050505050565b600060808284031215615e7157600080fd5b604051608081018181106001600160401b0382111715615e9357615e93614e46565b6040528251615ea181614e1b565b81526020830151615eb181614e1b565b60208201526040830151615ec481614c61565b60408201526060830151615ed781614cba565b60608201529392505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614a1c90830184614c09565b600060208284031215615f2f57600080fd5b8151610a0381614e1b565b60008251615f4c818460208701614bdd565b919091019291505056fea2646970667358221220a5a1b13f6334f51feacc420b761034eaa98f0a8ad53025e508eadf0058b2523664736f6c634300080b0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x621C CODESIZE SUB DUP1 PUSH3 0x621C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x16E JUMP JUMPDEST DUP2 DUP2 DUP2 DUP2 PUSH1 0x0 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH3 0x5A JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH3 0x64 JUMP JUMPDEST PUSH3 0x64 PUSH3 0x128 JUMP JUMPDEST PUSH3 0xCC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH3 0xEF JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x101 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x80 MSTORE DUP3 AND PUSH1 0xA0 MSTORE DUP1 ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP PUSH3 0x1AD SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x140 ADDRESS PUSH3 0x146 PUSH1 0x20 SHL PUSH3 0x2229 OR PUSH1 0x20 SHR JUMP JUMPDEST ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x18F DUP2 PUSH3 0x155 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x1A2 DUP2 PUSH3 0x155 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x5F8C PUSH3 0x290 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x5B6 ADD MSTORE DUP2 DUP2 PUSH2 0x1125 ADD MSTORE DUP2 DUP2 PUSH2 0x25EC ADD MSTORE DUP2 DUP2 PUSH2 0x262A ADD MSTORE DUP2 DUP2 PUSH2 0x3B41 ADD MSTORE PUSH2 0x3BBF ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3DC ADD MSTORE DUP2 DUP2 PUSH2 0x7EF ADD MSTORE DUP2 DUP2 PUSH2 0xA5F ADD MSTORE DUP2 DUP2 PUSH2 0xB63 ADD MSTORE DUP2 DUP2 PUSH2 0xCC2 ADD MSTORE DUP2 DUP2 PUSH2 0xF21 ADD MSTORE DUP2 DUP2 PUSH2 0xF86 ADD MSTORE DUP2 DUP2 PUSH2 0x122D ADD MSTORE DUP2 DUP2 PUSH2 0x19A6 ADD MSTORE DUP2 DUP2 PUSH2 0x1BB1 ADD MSTORE DUP2 DUP2 PUSH2 0x1D1D ADD MSTORE DUP2 DUP2 PUSH2 0x1DA3 ADD MSTORE DUP2 DUP2 PUSH2 0x1E39 ADD MSTORE DUP2 DUP2 PUSH2 0x2009 ADD MSTORE DUP2 DUP2 PUSH2 0x2270 ADD MSTORE DUP2 DUP2 PUSH2 0x2312 ADD MSTORE DUP2 DUP2 PUSH2 0x26AF ADD MSTORE DUP2 DUP2 PUSH2 0x2780 ADD MSTORE DUP2 DUP2 PUSH2 0x350F ADD MSTORE DUP2 DUP2 PUSH2 0x35AA ADD MSTORE DUP2 DUP2 PUSH2 0x36A8 ADD MSTORE DUP2 DUP2 PUSH2 0x4558 ADD MSTORE PUSH2 0x46A3 ADD MSTORE PUSH2 0x5F8C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x959B8C3F GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCF387FED GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEE719BC8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF8EEF10F GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF8EEF10F EQ PUSH2 0x763 JUMPI DUP1 PUSH4 0xFAD8B32A EQ PUSH2 0x77A JUMPI DUP1 PUSH4 0xFC673C4F EQ PUSH2 0x78D JUMPI DUP1 PUSH4 0xFE9D9303 EQ PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xEE719BC8 EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF387FED EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xD84878B8 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD95B6371 EQ PUSH2 0x693 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0xE16695B5 EQ PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xC63D75B6 GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xCB803CEB EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x5D8 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5EB JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x959B8C3F EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x9BD9BBC6 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xA1093295 EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x51489551 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x6E553F65 GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x745D08D9 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x51489551 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x62AD1B83 EQ PUSH2 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x3D3192CB EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x48D8F98D EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x19B53D35 EQ PUSH2 0x3D7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x29CF1405 EQ PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xDB8481C EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x152B838C EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x558D500 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x6E48538 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x371 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x65 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x33C PUSH2 0x8E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4B90 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x942 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x9CB JUMP JUMPDEST PUSH2 0x384 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0xADC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0xBE9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3BA PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4D42 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D7B JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x8 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3FE PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x467 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x114C JUMP JUMPDEST PUSH2 0x319 PUSH2 0x47A CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x118B JUMP JUMPDEST PUSH2 0x487 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x11CB JUMP JUMPDEST PUSH2 0x4CD PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E29 JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x501 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F54 JUMP JUMPDEST PUSH2 0x12E4 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1320 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x550 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x563 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1419 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x576 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1477 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x500B JUMP JUMPDEST PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x168E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x16D8 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x60C CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x175F JUMP JUMPDEST PUSH2 0x319 PUSH2 0x61F CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x18EE JUMP JUMPDEST PUSH2 0x319 PUSH2 0x632 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x191B JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1A5D JUMP JUMPDEST PUSH2 0x65A PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x509A JUMP JUMPDEST PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1ACC JUMP JUMPDEST PUSH2 0x384 PUSH2 0x6A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x6B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x1B8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x705 PUSH2 0x1BA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x732 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x1C91 JUMP JUMPDEST PUSH2 0x74A PUSH2 0x745 CALLDATASIZE PUSH1 0x4 PUSH2 0x516C JUMP JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x76B PUSH2 0x2001 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x522B JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x20BC JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x5260 JUMP JUMPDEST PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x52DF JUMP JUMPDEST PUSH2 0x220A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7BD PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x7CF JUMPI PUSH2 0x7CA PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D9 PUSH2 0x1BA9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0x7E7 PUSH2 0x11A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC52C43E1 DUP5 DUP5 PUSH2 0x827 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AA SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH4 0x5F5E100 PUSH2 0x8BD DUP7 DUP5 PUSH2 0x5354 JUMP JUMPDEST PUSH2 0x8C7 SWAP2 SWAP1 PUSH2 0x53EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLT ISZERO PUSH2 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x938 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x91A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x35 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x97D SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x938 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x99F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x938 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x9AD JUMPI POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 PUSH2 0x9E4 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP PUSH2 0x9EF PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 DUP3 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA15 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xAAAE47B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xAAAE47B5 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xACA SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xAEA DUP2 DUP6 DUP6 PUSH2 0x23BD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFE PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xB12 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB1D PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBAC9E8B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xBAC9E8B1 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBD6 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x24E4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC18 JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC1C JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO JUMPDEST PUSH2 0xC84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x101 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD4CCB0ED PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD4CCB0ED SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD39 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x55A1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C69642063757272656E6379 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD97 SWAP1 PUSH1 0xFF AND PUSH5 0xFFFFFFFFFF DUP6 AND TIMESTAMP PUSH2 0x283C JUMP JUMPDEST PUSH2 0xDD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C6964206D61747572697479 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xDED PUSH2 0xFFFF DUP6 AND PUSH5 0xFFFFFFFFFF DUP6 AND PUSH1 0x1 PUSH2 0x288C JUMP JUMPDEST PUSH1 0x65 SSTORE PUSH1 0x0 PUSH2 0xDFA PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0xE07 PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE89 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xE84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x56D2 JUMP JUMPDEST PUSH2 0xEA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x8AA89 PUSH1 0xEB SHL DUP2 MSTORE POP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEBA DUP8 PUSH5 0xFFFFFFFFFF AND PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP PUSH2 0xF12 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xED2 SWAP3 SWAP2 SWAP1 PUSH2 0x573F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEF4 SWAP3 SWAP2 SWAP1 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x29EC JUMP JUMPDEST PUSH2 0xF48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xFAD JUMPI PUSH2 0xFAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST POP POP POP POP POP DUP1 ISZERO PUSH2 0xFC4 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1056 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E736665722066726F6D20746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1087 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1092 DUP6 DUP3 DUP6 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x10BE DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x10EC DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1114 PUSH1 0x1 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH2 0x1123 JUMPI DUP2 PUSH2 0x1145 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1195 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x11A1 JUMPI PUSH1 0x0 NOT PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11C1 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x11E3 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11EE PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x416A1587 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x416A1587 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x127C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x12C5 JUMPI PUSH2 0x12BD PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP2 POP PUSH2 0x12D3 JUMP JUMPDEST PUSH2 0x12CD PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO SWAP2 POP JUMP JUMPDEST PUSH2 0x12EE CALLER DUP7 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0x1319 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132B DUP3 PUSH2 0x118B JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1368 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x13585E0811195C1BDCDA5D PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1373 DUP5 PUSH2 0x1C91 JUMP JUMPDEST SWAP1 POP PUSH2 0x138C DUP5 PUSH2 0x1382 DUP4 PUSH2 0x3128 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1425 DUP5 PUSH2 0x168E JUMP JUMPDEST SWAP1 POP PUSH2 0x1434 DUP2 PUSH2 0x1382 DUP7 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD PUSH2 0x13CB JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x14DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617574686F72697A696E672073656C66206173206F706572 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x30BA37B9 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x152D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x155C JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xF4CAEB2D6CA8932A215A353D0703C326EC2D81FC68170F320EB2AB49E9DF61F9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST PUSH2 0xFC4 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP PUSH2 0x15CD PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND GT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1603 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1634 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1660 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0xAEA DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1698 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x16CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16E4 DUP6 PUSH2 0xAF4 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1701 JUMPI PUSH2 0x1701 DUP4 CALLER DUP4 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x170C DUP2 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND SWAP3 SWAP1 DUP8 AND SWAP2 CALLER SWAP2 PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x176A PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17D6 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x17F3 JUMPI PUSH2 0x17F3 DUP4 CALLER DUP8 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x17FE DUP6 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1808 PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1874 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1882 DUP4 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP5 DUP12 PUSH1 0x40 MLOAD PUSH2 0x18DC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18F8 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x1909 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB PUSH2 0x190C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1925 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x194A JUMPI PUSH1 0x0 PUSH2 0x1934 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1940 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 SWAP1 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1955 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1F0750C1 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xF83A8608 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A11 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A44 PUSH1 0x7 PUSH2 0x1A37 PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND TIMESTAMP PUSH2 0x31A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 ISZERO PUSH2 0x1A57 JUMPI PUSH1 0x0 SWAP3 POP POP POP SWAP1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C SWAP1 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A96 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1AB1 SWAP2 SWAP1 PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xFC4 DUP4 DUP3 PUSH2 0x220A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0xA03 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA2 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x1BE6 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C26 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C4A SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x4 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1C67 JUMPI PUSH2 0x1C67 PUSH2 0x5215 JUMP JUMPDEST EQ ISZERO PUSH2 0x1C7F JUMPI POP DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C9B PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x1D00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x1D10 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x1D49 JUMPI POP DUP1 DUP7 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1D55 JUMPI POP PUSH1 0x0 DUP6 SGT JUMPDEST PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x125B9D985B1A59 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB0DE2217 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB0DE2217 SWAP1 PUSH1 0x24 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E16 SWAP2 SWAP1 PUSH2 0x59BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A9B7FDB PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB536FFB6 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1EA8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5A72 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND ISZERO DUP1 ISZERO PUSH2 0x1EC8 JUMPI POP DUP1 MLOAD PUSH1 0x1 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1F37 JUMPI POP DUP3 PUSH2 0x1F35 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1EE6 JUMPI PUSH2 0x1EE6 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F05 JUMPI PUSH2 0x1F05 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F24 JUMPI PUSH2 0x1F24 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x288C JUMP JUMPDEST EQ JUMPDEST PUSH2 0x1F40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1F9C JUMPI DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0x1FD6 SWAP3 POP POP POP JUMP JUMPDEST DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP JUMPDEST PUSH2 0x1FE4 DUP12 DUP11 DUP5 DUP5 PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x203E PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A2 SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST POP DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP7 SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ ISZERO PUSH2 0x211F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207265766F6B696E672073656C66206173206F70657261746F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2173 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x219F JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x50546E66E5F44D728365DC3908C63BC5CFEEAB470722C1677E3073A6AC294AA1 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x21E2 CALLER DUP6 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x21FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x2225 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3439 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2243 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22DB SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x1BAEFC5D PUSH1 0xE2 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6EBBF174 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x237D SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SGT PUSH2 0xA03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x4D75737420536574746C65 PUSH1 0xA8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2421 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F76652066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F766520746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x2507 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH2 0x2514 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x2551 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1990D85CDA081B585D1D5C9959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x255D DUP4 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x25D5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25D0 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x25D7 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x2734 JUMPI PUSH2 0x2614 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x268A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x26AB PUSH2 0x269B PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x26A3 PUSH2 0x1A25 JUMP JUMPDEST DUP12 DUP12 DUP11 PUSH2 0x3793 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x276B64B DUP11 ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26FC SWAP3 SWAP2 SWAP1 PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x27EB JUMP JUMPDEST PUSH2 0x2749 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2766 PUSH2 0x2756 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x275E PUSH2 0x1A25 JUMP JUMPDEST DUP11 DUP10 DUP10 PUSH2 0x3978 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x541F527 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x541F5270 SWAP1 PUSH2 0x27B7 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CAA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2820 DUP7 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST PUSH2 0x282C DUP4 CALLER DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP4 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2855 DUP7 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x285F SWAP1 DUP4 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2874 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2880 DUP6 DUP8 PUSH2 0x3E4E JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFF DUP5 GT ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x28AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 DUP3 GT ISZERO PUSH2 0x28BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xFFFF000000000000 PUSH1 0x30 DUP5 SWAP1 SHL AND PUSH6 0xFFFFFFFFFF00 PUSH1 0x8 DUP5 SWAP1 SHL AND OR PUSH1 0xFF DUP3 AND OR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x290B JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2935 JUMPI DUP1 PUSH2 0x291F DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP PUSH2 0x292E SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x5471 JUMP JUMPDEST SWAP2 POP PUSH2 0x290F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x294F JUMPI PUSH2 0x294F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2979 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x29E4 JUMPI PUSH2 0x298E PUSH1 0x1 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP PUSH2 0x299B PUSH1 0xA DUP7 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x29A6 SWAP1 PUSH1 0x30 PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x29BB JUMPI PUSH2 0x29BB PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x29DD PUSH1 0xA DUP7 PUSH2 0x5471 JUMP JUMPDEST SWAP5 POP PUSH2 0x297D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2A13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST PUSH2 0xFC4 DUP4 DUP4 DUP4 PUSH2 0x4039 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x2A98 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A96 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x2B03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x4223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x29DDB589B1FB5FC7CF394961C1ADF5F8C6454761ADF795E67FE149F658ABE895 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C0B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2C85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3AD5CBC1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x75AB9782 SWAP1 PUSH2 0x2C52 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0xBF7 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2D0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20696E73756666696369656E7420616C6C6F77616E63650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x23BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0x2D93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220616D6F756E74206578636565647320 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x62616C616E6365 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0x2DCA SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6B541DDAA720DB2B10A4D0CDAC39B8D360425FC073085FAC19BC82614677987 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2E22 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0x2E6F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xB281FC8C12954D22544DB45DE3159A39272895B169A852B314F9CC762E44C53B PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F25 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x23DE29 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH3 0x23DE29 SWAP1 PUSH2 0x2F6A SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x303B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x303B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EXTCODESIZE ISZERO PUSH2 0x303B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x4D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20746F6B656E20726563697069656E7420636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20686173206E6F20696D706C656D656E74657220666F7220455243373737546F PUSH1 0x64 DUP3 ADD MSTORE PUSH13 0x1AD95B9CD49958DA5C1A595B9D PUSH1 0x9A SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0xC7B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x30A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E642066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x30FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E6420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x310B DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x3119 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x2C85 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP4 DUP6 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 MLOAD SWAP1 SWAP3 PUSH2 0x317E SWAP3 SWAP2 ADD PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 MSTORE SWAP2 POP PUSH2 0xBF7 SWAP1 DUP4 SWAP1 DUP7 SWAP1 DUP5 SWAP1 PUSH2 0x3439 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 GT PUSH2 0x31F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x10D1CE881B9BC81B585C9AD95D1CC81B1A5CDD1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x7 DUP6 GT ISZERO PUSH2 0x323C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x10D1CE881B585C9AD95D081A5B99195E08189BDD5B99 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3247 DUP5 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 JUMPDEST DUP7 DUP2 GT PUSH2 0x32A9 JUMPI PUSH1 0x0 PUSH2 0x325E DUP3 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x3268 SWAP1 DUP5 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ ISZERO PUSH2 0x3280 JUMPI POP SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 GT ISZERO PUSH2 0x3296 JUMPI POP SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST POP DUP1 PUSH2 0x32A1 DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x324C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10D1CE881B9BC81B585C9AD95D08199BDD5B99 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3346 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP DUP5 PUSH1 0x34 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x335D SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x338A SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x33A0 SWAP1 POP DUP2 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2FE5BE0146F74C5BCE36C0B80911AF6C7D86FF27E89D5CFA61FC681327954E5D DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x33E7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x345C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x346C PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3484 SWAP2 SWAP1 PUSH2 0x5E5F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636569766572206973207A65726F20616464726573730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0x34ED DUP7 DUP7 DUP7 DUP7 PUSH2 0x42F5 JUMP JUMPDEST PUSH2 0x34F5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x369C JUMPI PUSH1 0x40 MLOAD PUSH4 0xF667F897 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xF667F897 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x355B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x356F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x357D PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3615 SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP SWAP1 POP DUP1 PUSH1 0x0 SLT PUSH2 0x3661 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4E6567617469766520436173682042616C616E6365 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x366E DUP10 DUP5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3678 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH2 0x3693 DUP4 DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x368C DUP5 PUSH2 0x3128 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x449E JUMP JUMPDEST POP POP POP POP PUSH2 0x374E JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x3734 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF242432A ADDRESS DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x36E4 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3706 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5EE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x374C DUP2 PUSH1 0x40 ADD MLOAD DUP7 DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x45DA JUMP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xBF7 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x37B2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x37AA JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x37DC JUMPI PUSH2 0x37DC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x37F9 JUMPI PUSH2 0x37F9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x380C JUMPI PUSH2 0x380C PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3824 JUMPI PUSH2 0x3824 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3852 JUMPI PUSH2 0x3852 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3877 JUMPI PUSH2 0x3877 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38A2 JUMPI PUSH2 0x38A2 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38E9 JUMPI PUSH2 0x38E9 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP6 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 SHL OR OR OR PUSH1 0x0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3945 JUMPI PUSH2 0x3945 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x398F JUMPI SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x39D4 JUMPI PUSH2 0x39D4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A02 JUMPI PUSH2 0x3A02 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD SWAP2 ISZERO ISZERO SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A47 JUMPI PUSH2 0x3A47 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MSTORE DUP1 MLOAD PUSH1 0xF0 DUP7 SWAP1 SHL PUSH1 0xFF PUSH1 0xF0 SHL AND PUSH1 0x98 DUP7 SWAP1 SHL PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB AND OR PUSH1 0x78 DUP6 SWAP1 SHL PUSH4 0xFFFFFFFF PUSH1 0x78 SHL AND OR SWAP1 DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3A96 JUMPI PUSH2 0x3A96 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x3B29 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B24 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x3B2B JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x3B37 DUP4 DUP3 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP DUP4 ISZERO PUSH2 0x3BEF JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x3BEA SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP DUP8 SWAP1 POP DUP5 PUSH2 0x4725 JUMP JUMPDEST PUSH2 0x3C03 JUMP JUMPDEST PUSH2 0x3C03 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP7 DUP5 PUSH2 0x4725 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C27 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C32 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x3C3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C4C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C57 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C62 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C6C SWAP1 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0xB0C SWAP1 DUP4 PUSH2 0x586C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 EQ ISZERO PUSH2 0x3CA5 JUMPI PUSH2 0x3C8F PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C9A SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x2 EQ ISZERO PUSH2 0x3CDD JUMPI PUSH2 0x3CBC PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CC7 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x2 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x3 EQ ISZERO PUSH2 0x3D15 JUMPI PUSH2 0x3CF4 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CFF SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D0A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x4 EQ ISZERO PUSH2 0x3D4D JUMPI PUSH2 0x3D2C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D37 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D42 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x5 EQ ISZERO PUSH2 0x3D90 JUMPI PUSH2 0x3D64 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D6F SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D7A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D85 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x6 EQ ISZERO PUSH2 0x3DD3 JUMPI PUSH2 0x3DA7 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DB2 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DBD SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DC8 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0xA PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x7 EQ ISZERO PUSH2 0x3E16 JUMPI PUSH2 0x3DEA PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DF5 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E00 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E0B SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x14 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x92DCECC2D8D2C840D2DCC8CAF PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E5C DUP6 PUSH2 0x4755 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E6B PUSH3 0x15180 DUP6 PUSH2 0x5D61 JUMP JUMPDEST ISZERO PUSH2 0x3E7D JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x3E91 JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EA1 DUP4 DUP8 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3EAB SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH1 0x5A DUP2 GT PUSH2 0x3EC2 JUMPI SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x4032 SWAP1 POP JUMP JUMPDEST PUSH2 0x168 DUP2 GT PUSH2 0x3F37 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EDC DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3EE6 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3EF0 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3EFB PUSH1 0x5A DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F05 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F12 PUSH1 0x6 DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F1D SWAP1 PUSH1 0x5A PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x6 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x0 EQ SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH2 0x870 DUP2 GT PUSH2 0x3FA9 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3F51 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F5C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F66 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3F70 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F7C PUSH2 0x168 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F86 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F93 PUSH1 0x1E DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F9E SWAP1 PUSH1 0x87 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x1E DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x1DE2 DUP2 GT PUSH2 0x4026 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3FC3 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FCE SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FD9 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FE3 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3FED SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3FF9 PUSH2 0x870 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x4003 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x4010 PUSH1 0x5A DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x401B SWAP1 PUSH1 0xC3 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x5A DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x0 SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4060 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST DUP3 MLOAD PUSH2 0x4073 SWAP1 PUSH1 0x35 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP2 MLOAD PUSH2 0x4087 SWAP1 PUSH1 0x36 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x409B SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4B26 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4104 JUMPI PUSH1 0x1 PUSH1 0x38 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x40C0 JUMPI PUSH2 0x40C0 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 PUSH2 0x40FC DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x409F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAC7FBAB5F54A3CA8194167523C6753BFEB96A445279294B6125B68CCE2177054 PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0x29965A1D SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x417E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4192 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAEA199E31A596269B42CDAFD93407F14436DB6E4CAD65417994C2EB37381E05A PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP3 POP PUSH4 0x29965A1D SWAP2 POP PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4278 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4774 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xFC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4296 SWAP2 SWAP1 PUSH2 0x5F1D JUMP JUMPDEST PUSH2 0xFC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E2066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x4366 DUP2 DUP7 PUSH1 0x0 DUP8 DUP8 DUP8 PUSH2 0x2B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x43DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E20616D6F756E7420657863656564732062616C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x6E6365 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 DUP4 SUB SWAP1 SSTORE PUSH1 0x34 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x440A SWAP1 DUP5 SWAP1 PUSH2 0x586C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA78A9BE3A7B862D26933AD85FB11D80EF66B8F972D7CBBA06621D583943A4098 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x4458 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x3429 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44AC DUP5 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4524 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x451F SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4526 JUMP JUMPDEST SELFBALANCE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5E665D PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP11 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 ISZERO ISZERO PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2F332E8 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x45CD SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST POP PUSH2 0x2880 DUP4 DUP9 DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x45E8 DUP6 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4660 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4637 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x465B SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4662 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4689 PUSH2 0x4671 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x4679 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x4682 DUP12 PUSH2 0x3128 JUMP JUMPDEST DUP10 DUP12 PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x276B64B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x276B64B SWAP1 PUSH2 0x46DA SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4708 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4718 DUP5 DUP11 DUP6 DUP6 PUSH2 0x3AB4 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 LT ISZERO PUSH2 0x4767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C6C PUSH3 0x15180 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x29E4 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x48F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x47A2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x479A JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x47CC JUMPI PUSH2 0x47CC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47E9 JUMPI PUSH2 0x47E9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47FC JUMPI PUSH2 0x47FC PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4814 JUMPI PUSH2 0x4814 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4843 JUMPI PUSH2 0x4843 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x486D JUMPI PUSH2 0x486D PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x48B4 JUMPI PUSH2 0x48B4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP7 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x1 PUSH2 0x3927 JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4957 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x49AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x49CA SWAP2 SWAP1 PUSH2 0x5F3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4A07 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4A1C DUP3 DUP3 DUP7 PUSH2 0x4A27 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4A36 JUMPI POP DUP2 PUSH2 0xA03 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4A46 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x4AB2 SWAP1 PUSH2 0x541D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x4AD4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x4AED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4AFF JUMP JUMPDEST POP PUSH2 0x313E SWAP3 SWAP2 POP PUSH2 0x4B7B JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4B46 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B7C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4BD1 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4BAC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4BF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4BE0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBF7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4C21 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA03 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4C97 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4CF4 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x4D04 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4D14 DUP2 PUSH2 0x4CBA JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4D60 DUP2 PUSH2 0x4D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4D9B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DAB DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4DD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DE3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4CBA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4ECF JUMPI PUSH2 0x4ECF PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4EF0 JUMPI PUSH2 0x4EF0 PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4F0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4F22 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST PUSH2 0x4EA7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4F37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4F6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4F77 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4F87 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4FAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4FB6 DUP10 DUP4 DUP11 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FD9 DUP9 DUP3 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4FF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5020 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x502B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x504D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5059 DUP7 DUP3 DUP8 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x508A DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0xA0 DUP2 SLT ISZERO PUSH2 0x50AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x80 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x50C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x50E7 JUMPI PUSH2 0x50E7 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5108 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x511B DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH2 0x512E DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x515C DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5190 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x51A0 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x51CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x51DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x51ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x51FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD PUSH1 0x5 DUP4 LT PUSH2 0x5252 JUMPI PUSH2 0x5252 PUSH2 0x5215 JUMP JUMPDEST DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5281 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x52B0 DUP9 DUP4 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x52C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52D3 DUP8 DUP3 DUP9 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x530F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x531B DUP6 DUP3 DUP7 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 DUP5 SGT DUP3 DUP5 SGT DUP1 DUP3 AND DUP7 DUP5 DIV DUP7 GT AND ISZERO PUSH2 0x537A JUMPI PUSH2 0x537A PUSH2 0x533E JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL PUSH1 0x0 DUP8 SLT DUP3 DUP2 AND DUP8 DUP4 SDIV DUP10 SLT AND ISZERO PUSH2 0x5399 JUMPI PUSH2 0x5399 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x0 DUP8 SLT SWAP3 POP DUP8 DUP3 SDIV DUP8 SLT DUP5 DUP5 AND AND ISZERO PUSH2 0x53B5 JUMPI PUSH2 0x53B5 PUSH2 0x533E JUMP JUMPDEST DUP8 DUP6 SDIV DUP8 SLT DUP2 DUP5 AND AND ISZERO PUSH2 0x53CB JUMPI PUSH2 0x53CB PUSH2 0x533E JUMP JUMPDEST POP POP POP SWAP3 SWAP1 SWAP4 MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x53FE JUMPI PUSH2 0x53FE PUSH2 0x53D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ PUSH1 0x0 NOT DUP5 EQ AND ISZERO PUSH2 0x5418 JUMPI PUSH2 0x5418 PUSH2 0x533E JUMP JUMPDEST POP SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x5431 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1A57 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x546C JUMPI PUSH2 0x546C PUSH2 0x533E JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5480 JUMPI PUSH2 0x5480 PUSH2 0x53D9 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x54AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH2 0x54C3 PUSH1 0x40 DUP7 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x54F3 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH2 0x5501 PUSH1 0x20 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x552A JUMPI PUSH2 0x552A PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x5555 PUSH2 0x4F1D DUP4 PUSH2 0x5511 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x5574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x5596 JUMPI PUSH2 0x5589 DUP2 PUSH2 0x5485 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x5578 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x55CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH2 0x160 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x55DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55E7 PUSH2 0x4E5C JUMP JUMPDEST PUSH2 0x55F0 DUP4 PUSH2 0x5485 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x55FE PUSH1 0x20 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x560F PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x5620 PUSH1 0x60 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x5631 PUSH1 0x80 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x5642 PUSH1 0xA0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x5653 PUSH1 0xC0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x5664 PUSH1 0xE0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x5677 DUP2 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP4 DUP2 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x568F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569B DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x56B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56C1 DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x56FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x570B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5719 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x572E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH9 0x2BB930B83832B21033 PUSH1 0xB9 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x5763 DUP2 PUSH1 0x9 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH3 0x10201 PUSH1 0xED SHL PUSH1 0x9 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x5786 DUP2 PUSH1 0xC DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0xC ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x3BB3 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x57AF DUP2 PUSH1 0x2 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x2 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x57D0 DUP2 PUSH1 0x3 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0x3 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A2063616C6C6572206973206E6F7420616E206F70657261746F PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x39103337B9103437B63232B9 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x587E JUMPI PUSH2 0x587E PUSH2 0x533E JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST DUP2 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x58F5 JUMPI PUSH2 0x58F5 PUSH2 0x4E46 JUMP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP1 SWAP2 POP DUP3 MLOAD PUSH2 0x5908 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5918 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT PUSH2 0x5939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x596D DUP5 DUP5 PUSH2 0x58C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x597C DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x58C1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x59F0 JUMPI PUSH2 0x59F0 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x59FE DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5A1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x5A2C PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5A3F DUP2 PUSH2 0x4D1F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND DUP2 EQ PUSH2 0x5A66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x5AAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5ABA PUSH2 0x4F1D DUP3 PUSH2 0x5511 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0xC0 SWAP2 DUP3 MUL DUP4 ADD DUP5 ADD SWAP2 DUP5 DUP3 ADD SWAP2 SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x5AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x5B4F JUMPI DUP1 DUP6 DUP11 SUB SLT ISZERO PUSH2 0x5AF6 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AFE PUSH2 0x4E85 JUMP JUMPDEST DUP6 MLOAD DUP2 MSTORE DUP7 DUP7 ADD MLOAD DUP8 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 DUP1 DUP8 ADD MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x5B3C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP1 DUP3 ADD MSTORE DUP4 MSTORE SWAP4 DUP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH2 0x5ADE JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5B86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BCF JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5BB3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI PUSH1 0x5F NOT DUP11 DUP5 SUB ADD DUP6 MSTORE DUP2 MLOAD PUSH1 0xE0 DUP2 MLOAD PUSH1 0x7 DUP2 LT PUSH2 0x5C38 JUMPI PUSH2 0x5C38 PUSH2 0x5215 JUMP JUMPDEST DUP6 MSTORE DUP2 DUP9 ADD MLOAD PUSH2 0xFFFF AND DUP9 DUP7 ADD MSTORE DUP10 DUP3 ADD MLOAD DUP11 DUP7 ADD MSTORE DUP9 DUP3 ADD MLOAD DUP10 DUP7 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xC0 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5C86 DUP2 DUP7 ADD DUP4 PUSH2 0x5B9F JUMP JUMPDEST SWAP7 DUP9 ADD SWAP7 SWAP5 POP POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C11 JUMP JUMPDEST POP SWAP1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI DUP10 DUP4 SUB PUSH1 0x5F NOT ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH2 0xFFFF AND DUP5 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP6 ADD MSTORE DUP9 ADD MLOAD DUP9 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x5D1B DUP9 DUP6 ADD DUP3 PUSH2 0x5B9F JUMP JUMPDEST SWAP6 DUP8 ADD SWAP6 SWAP4 POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CE1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x5D41 JUMPI PUSH2 0x5D41 PUSH2 0x533E JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x5D5A JUMPI PUSH2 0x5D5A PUSH2 0x533E JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5D70 JUMPI PUSH2 0x5D70 PUSH2 0x53D9 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x5E18 SWAP1 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x4718 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5E43 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x5E55 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x5E93 JUMPI PUSH2 0x5E93 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x5EA1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5EB1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x5EC4 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5ED7 DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4A1C SWAP1 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5F2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5F4C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4BDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 LOG1 0xB1 EXTCODEHASH PUSH4 0x34F51FEA 0xCC TIMESTAMP SIGNEXTEND PUSH23 0x1034EAA98F0A8AD53025E508EADF0058B2523664736F6C PUSH4 0x4300080B STOP CALLER ",
              "sourceMap": "123:9272:37:-:0;;;177:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;238:9;249:5;915:9:38;926:5;2369:13:0;;;;;;;;;;;:48;;2405:12;;;;2404:13;2369:48;;;2385:16;:14;:16::i;:::-;2361:107;;;;-1:-1:-1;;;2361:107:0;;816:2:43;2361:107:0;;;798:21:43;855:2;835:18;;;828:30;894:34;874:18;;;867:62;-1:-1:-1;;;945:18:43;;;938:44;999:19;;2361:107:0;;;;;;;;2479:19;2502:13;;;;;;2501:14;2525:98;;;;2559:13;:20;;-1:-1:-1;;2593:19:0;;;;;2525:98;-1:-1:-1;;;;;1286:22:36;;::::1;;::::0;1318:12;::::1;;::::0;2645:66:0;;;;2695:5;2679:21;;-1:-1:-1;;2679:21:0;;;2645:66;-1:-1:-1;;1701:1:20;1806:7;:22;-1:-1:-1;123:9272:37;;-1:-1:-1;;;;123:9272:37;3037:123:0;3085:4;3109:44;3147:4;3109:29;;;;;:44;;:::i;:::-;3108:45;3101:52;;3037:123;:::o;1186:320:6:-;-1:-1:-1;;;;;1476:19:6;;:23;;;1186:320::o;14:144:43:-;-1:-1:-1;;;;;102:31:43;;92:42;;82:70;;148:1;145;138:12;82:70;14:144;:::o;163:446::-;277:6;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;386:9;380:16;405:44;443:5;405:44;:::i;:::-;518:2;503:18;;497:25;468:5;;-1:-1:-1;531:46:43;497:25;531:46;:::i;:::-;596:7;586:17;;;163:446;;;;;:::o;614:410::-;123:9272:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@NotionalV2_5135": {
                  "entryPoint": null,
                  "id": 5135,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@WETH_5138": {
                  "entryPoint": null,
                  "id": 5138,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__ERC777_init_244": {
                  "entryPoint": 10732,
                  "id": 244,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@__ERC777_init_unchained_322": {
                  "entryPoint": 16441,
                  "id": 322,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_1178": {
                  "entryPoint": 9149,
                  "id": 1178,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_1337": {
                  "entryPoint": null,
                  "id": 1337,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_burn_1067": {
                  "entryPoint": 17141,
                  "id": 1067,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_burn_6852": {
                  "entryPoint": 13369,
                  "id": 6852,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_callOptionalReturn_3011": {
                  "entryPoint": 16931,
                  "id": 3011,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_callTokensReceived_1281": {
                  "entryPoint": 11904,
                  "id": 1281,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_callTokensToSend_1223": {
                  "entryPoint": 11110,
                  "id": 1223,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_getMaturedUnderlyingExternal_5653": {
                  "entryPoint": 8760,
                  "id": 5653,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_isConstructor_72": {
                  "entryPoint": null,
                  "id": 72,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mintInternal_6517": {
                  "entryPoint": 9444,
                  "id": 6517,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_mint_904": {
                  "entryPoint": 13040,
                  "id": 904,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_move_1133": {
                  "entryPoint": 11546,
                  "id": 1133,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_msgSender_1812": {
                  "entryPoint": null,
                  "id": 1812,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_redeemInternal_6246": {
                  "entryPoint": 12610,
                  "id": 6246,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_safeUint88_7081": {
                  "entryPoint": 12584,
                  "id": 7081,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_sellfCash_6988": {
                  "entryPoint": 17882,
                  "id": 6988,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_sendTokensToReceiver_7055": {
                  "entryPoint": 15028,
                  "id": 7055,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_send_974": {
                  "entryPoint": 12357,
                  "id": 974,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_spendAllowance_1324": {
                  "entryPoint": 11406,
                  "id": 1324,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_withdrawCashToAccount_6910": {
                  "entryPoint": 17566,
                  "id": 6910,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@allowance_703": {
                  "entryPoint": null,
                  "id": 703,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_728": {
                  "entryPoint": 2780,
                  "id": 728,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@asset_5610": {
                  "entryPoint": 4357,
                  "id": 5610,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@authorizeOperator_565": {
                  "entryPoint": 5239,
                  "id": 565,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@balanceOf_389": {
                  "entryPoint": null,
                  "id": 389,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@burn_486": {
                  "entryPoint": 8714,
                  "id": 486,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@convertToAssets_5817": {
                  "entryPoint": 2507,
                  "id": 5817,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@convertToShares_5768": {
                  "entryPoint": 6427,
                  "id": 5768,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_5411": {
                  "entryPoint": null,
                  "id": 5411,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decodeERC1155Id_4415": {
                  "entryPoint": null,
                  "id": 4415,
                  "parameterSlots": 1,
                  "returnSlots": 3
                },
                "@defaultOperators_621": {
                  "entryPoint": 2272,
                  "id": 621,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@deposit_6059": {
                  "entryPoint": 4896,
                  "id": 6059,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@encodeBorrowTrade_4825": {
                  "entryPoint": 18307,
                  "id": 4825,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@encodeERC1155Id_4494": {
                  "entryPoint": 10380,
                  "id": 4494,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@encodeLendETHTrade_4712": {
                  "entryPoint": 14227,
                  "id": 4712,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@encodeLendTrade_4592": {
                  "entryPoint": 14712,
                  "id": 4592,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@functionCallWithValue_3330": {
                  "entryPoint": 18678,
                  "id": 3330,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@functionCall_3260": {
                  "entryPoint": 18292,
                  "id": 3260,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getAssetToken_5522": {
                  "entryPoint": 8193,
                  "id": 5522,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@getBitNumFromMaturity_4372": {
                  "entryPoint": 15950,
                  "id": 4372,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@getCurrencyId_5382": {
                  "entryPoint": 6783,
                  "id": 5382,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getDecodedID_5401": {
                  "entryPoint": 4521,
                  "id": 5401,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getMarketIndex_4196": {
                  "entryPoint": 12711,
                  "id": 4196,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@getMarketIndex_5442": {
                  "entryPoint": 6693,
                  "id": 5442,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getMaturity_5352": {
                  "entryPoint": 7051,
                  "id": 5352,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReferenceTime_3977": {
                  "entryPoint": 15372,
                  "id": 3977,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTimeUTC0_4001": {
                  "entryPoint": 18261,
                  "id": 4001,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getToken_5559": {
                  "entryPoint": 4780,
                  "id": 5559,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@getTradedMarket_4073": {
                  "entryPoint": 15478,
                  "id": 4073,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getUnderlyingToken_5489": {
                  "entryPoint": 7081,
                  "id": 5489,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getfCashId_5336": {
                  "entryPoint": null,
                  "id": 5336,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@granularity_361": {
                  "entryPoint": null,
                  "id": 361,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@hasMatured_5366": {
                  "entryPoint": 5570,
                  "id": 5366,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@initialize_5326": {
                  "entryPoint": 3069,
                  "id": 5326,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@isContract_1560": {
                  "entryPoint": 8745,
                  "id": 1560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isContract_3189": {
                  "entryPoint": null,
                  "id": 3189,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isOperatorFor_520": {
                  "entryPoint": 6890,
                  "id": 520,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@isValidMaturity_4118": {
                  "entryPoint": 10300,
                  "id": 4118,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@maxDeposit_5837": {
                  "entryPoint": 4491,
                  "id": 5837,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@maxMint_5857": {
                  "entryPoint": 6382,
                  "id": 5857,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@maxRedeem_5887": {
                  "entryPoint": 6860,
                  "id": 5887,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@maxWithdraw_5873": {
                  "entryPoint": 6749,
                  "id": 5873,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@mintViaAsset_6337": {
                  "entryPoint": 3049,
                  "id": 6337,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@mintViaUnderlying_6359": {
                  "entryPoint": 4343,
                  "id": 6359,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@mint_6097": {
                  "entryPoint": 5145,
                  "id": 6097,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_332": {
                  "entryPoint": 2370,
                  "id": 332,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@onERC1155Received_6645": {
                  "entryPoint": 7387,
                  "id": 6645,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@operatorBurn_685": {
                  "entryPoint": 8664,
                  "id": 685,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@operatorSend_655": {
                  "entryPoint": 4836,
                  "id": 655,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@previewDeposit_5908": {
                  "entryPoint": 7313,
                  "id": 5908,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@previewMint_5929": {
                  "entryPoint": 5774,
                  "id": 5929,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@previewRedeem_6012": {
                  "entryPoint": 4555,
                  "id": 6012,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@previewWithdraw_5971": {
                  "entryPoint": 2804,
                  "id": 5971,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@redeemToAsset_6690": {
                  "entryPoint": 4428,
                  "id": 6690,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@redeemToUnderlying_6712": {
                  "entryPoint": 5082,
                  "id": 6712,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@redeem_6217": {
                  "entryPoint": 5983,
                  "id": 6217,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@redeem_6668": {
                  "entryPoint": 6814,
                  "id": 6668,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@revokeOperator_610": {
                  "entryPoint": 8380,
                  "id": 610,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@safeApprove_2889": {
                  "entryPoint": 10782,
                  "id": 2889,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_2845": {
                  "entryPoint": 14171,
                  "id": 2845,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@safeTransfer_2819": {
                  "entryPoint": 18213,
                  "id": 2819,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@send_411": {
                  "entryPoint": 5540,
                  "id": 411,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@symbol_342": {
                  "entryPoint": 5525,
                  "id": 342,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@toString_3744": {
                  "entryPoint": 10471,
                  "id": 3744,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@totalAssets_5718": {
                  "entryPoint": 1971,
                  "id": 5718,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_373": {
                  "entryPoint": null,
                  "id": 373,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_803": {
                  "entryPoint": 4041,
                  "id": 803,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_468": {
                  "entryPoint": 5595,
                  "id": 468,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@verifyCallResult_3465": {
                  "entryPoint": 18983,
                  "id": 3465,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@withdraw_6147": {
                  "entryPoint": 5848,
                  "id": 6147,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_array_uint8_dyn_fromMemory": {
                  "entryPoint": 21812,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 20222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_Token_fromMemory": {
                  "entryPoint": 22721,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 19966,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 24000,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 20798,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 19835,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 20308,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 20844,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 19577,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 20491,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr": {
                  "entryPoint": 21088,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 23154,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool": {
                  "entryPoint": 20009,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 24349,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256_fromMemory": {
                  "entryPoint": 21285,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int256t_int256t_uint256_fromMemory": {
                  "entryPoint": 23409,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 22226,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_AccountContext_$4940_memory_ptr_fromMemory": {
                  "entryPoint": 22972,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_CashGroupSettings_$4929_memory_ptr_fromMemory": {
                  "entryPoint": 21921,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr_fromMemory": {
                  "entryPoint": 24159,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_Token_$4890_memory_ptrt_struct$_Token_$4890_memory_ptr_fromMemory": {
                  "entryPoint": 22863,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint16t_uint40": {
                  "entryPoint": 19778,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 19528,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": 20454,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_addresst_address": {
                  "entryPoint": 20579,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_addresst_uint32": {
                  "entryPoint": 19900,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_bytes_memory_ptr": {
                  "entryPoint": 21215,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_struct$_RedeemOpts_$7490_memory_ptr": {
                  "entryPoint": 20634,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint8t_bytes32_fromMemory": {
                  "entryPoint": 21654,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint88t_addresst_uint32": {
                  "entryPoint": 19660,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint88t_uint8t_bytes32_fromMemory": {
                  "entryPoint": 21715,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_uint8_fromMemory": {
                  "entryPoint": 21637,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes32_dyn": {
                  "entryPoint": 23455,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bool": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_string": {
                  "entryPoint": 19465,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 24378,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b_t_string_memory_ptr_t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 22335,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476_t_string_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 22418,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24029,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24291,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23514,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23722,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes32_t_address__to_t_address_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 19344,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2763_t_bool__to_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256__to_t_address_t_int256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256_t_enum$_TokenType_$4834__to_t_address_t_int256_t_uint8__fromStack_reversed": {
                  "entryPoint": 21035,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_INotionalV2_$7474__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IWETH9_$7263__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 19509,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22492,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22560,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 23925,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22917,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr__to_t_struct$_RedeemOpts_$7490_memory_ptr__fromStack_reversed": {
                  "entryPoint": 22659,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_address__to_t_uint16_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_int256_t_bool__to_t_uint16_t_int256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256_t_bool__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint40_t_int256_t_uint256_t_bool__to_t_uint16_t_uint256_t_int256_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint16_t_uint88_t_bool__to_t_uint16_t_uint88_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 24106,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint40__to_t_uint40__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 20135,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_7709": {
                  "entryPoint": 20060,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_7716": {
                  "entryPoint": 20101,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_uint8_dyn": {
                  "entryPoint": 21777,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 20183,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 23854,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_int256": {
                  "entryPoint": 21487,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 21617,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_int256": {
                  "entryPoint": 21332,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 21586,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 22636,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 19421,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 21533,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 23878,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 23905,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 21310,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 21465,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 21013,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 23387,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 20038,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 19553,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 19995,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint16": {
                  "entryPoint": 19743,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint32": {
                  "entryPoint": 19642,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint40": {
                  "entryPoint": 19759,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint88": {
                  "entryPoint": 19621,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:53730:43",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:43",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "115:76:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "125:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "137:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "148:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "125:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "160:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "160:25:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "84:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "95:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "106:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14:177:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "347:507:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "357:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "367:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "361:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "378:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "396:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "407:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "392:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "392:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "382:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "426:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "437:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "419:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "419:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "419:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "449:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "460:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "453:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "475:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "495:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "489:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "489:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "479:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "518:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "526:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "511:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "511:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "511:22:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "542:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "553:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "564:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "549:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "549:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "542:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "576:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "594:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "602:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "590:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "590:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "580:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "614:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "623:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "618:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "682:146:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "703:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "718:6:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "712:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "712:13:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "735:3:43",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "740:1:43",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "731:3:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "731:11:43"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "744:1:43",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "727:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "727:19:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "708:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "708:39:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "696:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "696:52:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "696:52:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "761:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "772:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "777:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "768:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "768:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "761:3:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "793:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "807:6:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "815:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "803:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "803:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "793:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "644:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "647:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "641:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "641:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "655:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "657:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "666:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "669:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "662:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "662:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "657:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "637:3:43",
                                "statements": []
                              },
                              "src": "633:195:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "837:11:43",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "845:3:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "837:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "316:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "327:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "338:4:43",
                            "type": ""
                          }
                        ],
                        "src": "196:658:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "912:205:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "922:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "931:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "926:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "991:63:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1016:3:43"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "1021:1:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1012:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1012:11:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1035:3:43"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1040:1:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1031:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1031:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1025:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1025:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1005:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1005:39:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1005:39:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "955:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "949:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "963:19:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "965:15:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "974:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "977:2:43",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "970:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "970:10:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "965:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "945:3:43",
                                "statements": []
                              },
                              "src": "941:113:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1080:31:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "1093:3:43"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "1098:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1089:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1089:16:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1107:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1082:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1082:27:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1069:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1072:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1066:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1066:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1063:48:43"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "890:3:43",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "895:3:43",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "900:6:43",
                            "type": ""
                          }
                        ],
                        "src": "859:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1172:208:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1182:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1196:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1196:12:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1186:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1224:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1229:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1217:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1217:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1217:19:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1271:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1278:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1267:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1267:16:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1289:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1294:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1285:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1285:14:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1301:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1245:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1245:63:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1245:63:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1317:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1332:3:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1345:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1353:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1341:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1341:15:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1362:2:43",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "1358:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1358:7:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1337:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1337:29:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1328:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1328:39:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1369:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1324:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1324:50:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1149:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1156:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1164:3:43",
                            "type": ""
                          }
                        ],
                        "src": "1122:258:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1506:99:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1523:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1534:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1516:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1516:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1516:21:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1546:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1572:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1584:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1595:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1580:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1580:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "1554:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1554:45:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1546:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1475:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1486:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1497:4:43",
                            "type": ""
                          }
                        ],
                        "src": "1385:220:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1680:110:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1726:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1735:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1738:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1728:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1728:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1728:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1710:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1697:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1697:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1722:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1693:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1693:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1690:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1751:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1774:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1761:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1761:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1751:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1646:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1657:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1669:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1610:180:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1840:86:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1904:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1913:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1916:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1906:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1906:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1906:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1863:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1874:5:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1889:3:43",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1894:1:43",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1885:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1885:11:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1898:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1881:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1881:19:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1870:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1870:31:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1860:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1860:42:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1853:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1853:50:43"
                              },
                              "nodeType": "YulIf",
                              "src": "1850:70:43"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1829:5:43",
                            "type": ""
                          }
                        ],
                        "src": "1795:131:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2018:228:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2064:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2073:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2076:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2066:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2066:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2066:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2039:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2048:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2035:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2035:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2060:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2031:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2031:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2028:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2089:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2115:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2102:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2102:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2093:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2159:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2134:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2134:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2134:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2174:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2184:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2174:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2198:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2225:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2236:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2221:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2221:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2208:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2208:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2198:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1976:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1987:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1999:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2007:6:43",
                            "type": ""
                          }
                        ],
                        "src": "1931:315:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2292:50:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2309:3:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2328:5:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2321:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2321:13:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2314:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2314:21:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2302:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2302:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2302:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2276:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2283:3:43",
                            "type": ""
                          }
                        ],
                        "src": "2251:91:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2442:92:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2452:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2464:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2475:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2460:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2460:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2452:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2494:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2519:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2512:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2512:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2505:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2505:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2487:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2487:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2487:41:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2411:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2422:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2433:4:43",
                            "type": ""
                          }
                        ],
                        "src": "2347:187:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2583:91:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2652:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2661:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2664:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2654:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2654:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2654:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2606:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2617:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2624:24:43",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2613:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2613:36:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2603:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2603:47:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2596:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2596:55:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2593:75:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint88",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2572:5:43",
                            "type": ""
                          }
                        ],
                        "src": "2539:135:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2723:77:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2778:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2787:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2790:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2780:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2780:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2780:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2746:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2757:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2764:10:43",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2753:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2753:22:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2743:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2743:33:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2736:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2736:41:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2733:61:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2712:5:43",
                            "type": ""
                          }
                        ],
                        "src": "2679:121:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2924:475:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2971:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2980:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2983:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2973:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2973:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2973:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2945:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2954:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2941:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2941:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2966:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2937:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2937:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "2934:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2996:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3019:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3006:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3006:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2996:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3038:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3068:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3079:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3064:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3064:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3051:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3051:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3042:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3116:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint88",
                                  "nodeType": "YulIdentifier",
                                  "src": "3092:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3092:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3092:30:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3131:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3141:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3131:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3155:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3187:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3198:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3183:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3183:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3170:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3170:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3159:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3236:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3211:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3211:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3211:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3253:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3263:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3253:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3279:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3311:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3322:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3307:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3307:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3294:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3294:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3283:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3359:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "3335:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3335:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3335:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3376:17:43",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "3386:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3376:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint88t_addresst_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2866:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2877:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2889:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2897:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2905:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2913:6:43",
                            "type": ""
                          }
                        ],
                        "src": "2805:594:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3448:73:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3499:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3508:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3511:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3501:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3501:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3501:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3471:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3482:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3489:6:43",
                                            "type": "",
                                            "value": "0xffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3478:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3478:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3468:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3468:29:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3461:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3461:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3458:57:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint16",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3437:5:43",
                            "type": ""
                          }
                        ],
                        "src": "3404:117:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3570:79:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3627:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3636:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3639:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3629:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3629:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3629:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3593:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3604:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3611:12:43",
                                            "type": "",
                                            "value": "0xffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3600:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3600:24:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3590:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3590:35:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3583:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3583:43:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3580:63:43"
                            }
                          ]
                        },
                        "name": "validator_revert_uint40",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3559:5:43",
                            "type": ""
                          }
                        ],
                        "src": "3526:123:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3739:299:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3785:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3794:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3797:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3787:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3787:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3787:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3760:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3769:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3756:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3756:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3781:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3752:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3752:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "3749:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3810:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3836:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3823:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3823:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3814:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3879:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint16",
                                  "nodeType": "YulIdentifier",
                                  "src": "3855:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3855:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3855:30:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3894:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3904:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3894:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3918:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3950:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3961:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3946:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3946:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3933:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3933:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3922:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3998:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint40",
                                  "nodeType": "YulIdentifier",
                                  "src": "3974:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3974:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3974:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4015:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4025:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4015:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint16t_uint40",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3697:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3708:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3720:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3728:6:43",
                            "type": ""
                          }
                        ],
                        "src": "3654:384:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4164:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4174:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4186:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4197:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4182:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4182:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4174:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4216:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4231:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4247:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4252:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4243:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4243:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4256:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4239:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4239:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4227:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4227:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4209:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4209:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4209:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_INotionalV2_$7474__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4133:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4144:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4155:4:43",
                            "type": ""
                          }
                        ],
                        "src": "4043:223:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4375:352:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4421:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4430:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4433:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4423:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4423:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4423:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4396:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4405:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4392:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4392:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4417:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4388:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4388:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "4385:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4446:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4472:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4459:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4459:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4450:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4516:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4491:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4491:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4491:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4531:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4541:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4531:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4555:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4587:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4598:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4583:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4583:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4570:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4570:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4559:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4636:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4611:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4611:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4611:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4653:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4663:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4653:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4679:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4706:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4717:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4702:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4702:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4689:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4689:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4679:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4325:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4336:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4348:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4356:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4364:6:43",
                            "type": ""
                          }
                        ],
                        "src": "4271:456:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4829:87:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4839:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4851:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4862:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4847:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4847:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4839:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4881:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4896:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4904:4:43",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4892:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4892:17:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4874:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4874:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4874:36:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4798:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4809:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4820:4:43",
                            "type": ""
                          }
                        ],
                        "src": "4732:184:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5022:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5032:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5044:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5055:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5032:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5074:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5089:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5105:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5110:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5101:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5101:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5114:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5097:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5097:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5085:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5085:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5067:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5067:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5067:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4991:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5002:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5013:4:43",
                            "type": ""
                          }
                        ],
                        "src": "4921:203:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5232:351:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5278:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5287:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5290:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5280:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5280:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5280:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5253:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5262:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5249:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5249:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5274:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5245:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5245:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5242:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5303:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5326:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5313:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5313:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5303:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5345:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5375:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5386:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5371:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5371:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5358:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5358:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5349:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5424:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5399:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5399:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5399:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5439:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5449:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5439:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5463:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5495:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5506:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5491:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5491:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5478:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5478:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5467:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5543:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5519:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5519:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5519:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5560:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5570:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5560:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5182:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5193:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5205:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5213:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5221:6:43",
                            "type": ""
                          }
                        ],
                        "src": "5129:454:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5658:177:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5704:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5713:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5716:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5706:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5706:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5706:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5679:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5688:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5675:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5675:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5700:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5671:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5671:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "5668:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5729:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5755:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5742:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5742:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5733:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5799:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5774:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5774:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5774:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5814:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5824:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5814:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5624:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5635:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5647:6:43",
                            "type": ""
                          }
                        ],
                        "src": "5588:247:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5965:151:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5975:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5987:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5998:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5983:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5983:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5975:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6017:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6032:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6040:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6028:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6028:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6010:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6010:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6010:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6068:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6079:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6064:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6064:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6088:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6096:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6084:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6084:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6057:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6057:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6057:53:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5926:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5937:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5945:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5956:4:43",
                            "type": ""
                          }
                        ],
                        "src": "5840:276:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6163:76:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6217:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6226:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6229:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6219:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6219:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6219:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6186:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "6207:5:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "6200:6:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6200:13:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6193:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6193:21:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6183:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6183:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6176:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6176:40:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6173:60:43"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6152:5:43",
                            "type": ""
                          }
                        ],
                        "src": "6121:118:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6311:174:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6357:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6366:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6369:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6359:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6359:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6359:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6332:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6341:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6328:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6328:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6353:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "6321:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6382:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6408:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6395:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6395:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6386:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6449:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "6427:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6427:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6427:28:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6464:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6474:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6464:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6277:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6288:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6300:6:43",
                            "type": ""
                          }
                        ],
                        "src": "6244:241:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6628:161:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6638:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6650:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6661:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6646:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6646:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6638:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6680:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6711:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6716:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6707:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6707:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6720:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6703:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6703:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6691:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6691:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6673:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6673:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6673:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6744:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6755:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6740:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6740:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6774:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6767:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6767:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "6760:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6760:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6733:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6733:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6733:50:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2763_t_bool__to_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6589:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6600:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6608:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6619:4:43",
                            "type": ""
                          }
                        ],
                        "src": "6490:299:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6826:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6843:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6850:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6855:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6846:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6846:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6836:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6836:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6836:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6883:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6886:4:43",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6876:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6876:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6876:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6907:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6910:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6900:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6900:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6900:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6794:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6972:209:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6982:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6998:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6992:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6992:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "6982:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7010:37:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7032:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7040:6:43",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7028:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7028:19:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7014:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7122:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7124:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7124:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7124:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7065:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7077:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7062:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7062:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7101:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7113:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7098:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7098:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7059:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7059:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7056:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7160:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7164:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7153:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7153:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7153:22:43"
                            }
                          ]
                        },
                        "name": "allocate_memory_7709",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "6961:6:43",
                            "type": ""
                          }
                        ],
                        "src": "6926:255:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7232:207:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7242:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7258:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7252:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7252:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7242:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7270:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7292:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7300:4:43",
                                    "type": "",
                                    "value": "0xc0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7288:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7288:17:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7274:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7380:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7382:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7382:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7382:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7323:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7335:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7320:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7320:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7359:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7371:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7356:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7356:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7317:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7317:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7314:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7418:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7422:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7411:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7411:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7411:22:43"
                            }
                          ]
                        },
                        "name": "allocate_memory_7716",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "7221:6:43",
                            "type": ""
                          }
                        ],
                        "src": "7186:253:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7489:230:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7499:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7515:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7509:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7509:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7499:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7527:58:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7549:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "7565:4:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7571:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7561:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7561:13:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7580:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "7576:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7576:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7557:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7557:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7545:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7545:40:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7531:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7660:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7662:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7662:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7662:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7603:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7615:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7600:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7600:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7639:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7651:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7636:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7636:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7597:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7597:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7594:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7698:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7702:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7691:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7691:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7691:22:43"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7469:4:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "7478:6:43",
                            "type": ""
                          }
                        ],
                        "src": "7444:275:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7781:129:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7825:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7827:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7827:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7827:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7797:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7805:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7794:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7794:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7791:56:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7856:48:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7876:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7884:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7872:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7872:15:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7893:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "7889:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7889:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7868:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7868:29:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7899:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7864:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7864:40:43"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "7856:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7761:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7772:4:43",
                            "type": ""
                          }
                        ],
                        "src": "7724:186:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7967:410:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8016:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8025:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8028:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8018:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8018:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8018:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "7995:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8003:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7991:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7991:17:43"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8010:3:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7987:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7987:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7980:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7980:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "7977:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8041:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8064:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8051:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8051:20:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8045:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8080:63:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8139:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "8111:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8111:31:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8095:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8095:48:43"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8084:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8159:7:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8168:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8152:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8152:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8152:19:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8219:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8228:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8231:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8221:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8221:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8221:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8194:6:43"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8202:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8190:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8190:15:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8207:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8186:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8186:26:43"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8214:3:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8183:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8183:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "8180:55:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8261:7:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8270:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8257:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8257:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8281:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8289:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8277:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8277:17:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8296:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8244:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8244:55:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8244:55:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8323:7:43"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8332:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8319:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8319:16:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8337:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8315:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8315:27:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8344:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8308:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8308:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8308:38:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8355:16:43",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "8364:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8355:5:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7941:6:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7949:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "7957:5:43",
                            "type": ""
                          }
                        ],
                        "src": "7915:462:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8538:729:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8585:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8594:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8597:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8587:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8587:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8587:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8559:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8568:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8555:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8555:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8580:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8551:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8551:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "8548:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8610:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8636:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8623:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8623:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8614:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8680:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8655:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8655:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8655:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8695:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8705:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8695:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8719:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8751:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8762:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8747:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8747:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8734:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8734:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8723:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8800:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8775:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8775:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8775:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8817:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8827:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8817:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8843:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8870:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8881:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8866:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8866:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8853:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8853:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8843:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8894:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8925:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8936:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8921:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8921:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8908:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8908:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8898:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8949:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8959:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8953:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9004:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9013:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9016:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9006:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9006:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9006:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8992:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9000:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8989:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8989:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "8986:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9029:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9060:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9071:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9056:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9056:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9080:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9039:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9039:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9029:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9097:49:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9130:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9141:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9126:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9126:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9113:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9113:33:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9101:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9175:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9184:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9187:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9177:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9177:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9177:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9161:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9171:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9158:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9158:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9155:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9200:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9231:9:43"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9242:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9227:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9227:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9253:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9210:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9210:51:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9200:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8472:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8483:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8495:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8503:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8511:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8519:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8527:6:43",
                            "type": ""
                          }
                        ],
                        "src": "8382:885:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9359:228:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9405:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9414:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9417:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9407:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9407:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9407:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9380:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9389:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9376:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9401:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9372:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9372:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9369:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9430:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9453:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9440:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9440:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9430:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9472:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9502:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9513:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9498:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9498:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9485:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9485:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9476:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9551:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9526:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9526:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9526:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9566:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9576:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9566:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9317:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9328:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9340:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9348:6:43",
                            "type": ""
                          }
                        ],
                        "src": "9272:315:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9705:410:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9751:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9760:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9763:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9753:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9753:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9753:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9726:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9735:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9722:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9722:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9747:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9718:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9718:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9715:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9776:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9802:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9789:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9789:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9780:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9846:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9821:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9821:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9821:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9861:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9871:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9861:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9885:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9912:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9923:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9908:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9908:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9895:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9895:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9885:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9936:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9967:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9978:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9963:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9963:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9950:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9950:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9940:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10025:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10034:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10037:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10027:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10027:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10027:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9997:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10005:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9994:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9994:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "9991:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10050:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10081:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10092:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10077:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10077:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10101:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10060:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10060:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10050:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9655:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9666:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9678:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9686:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9694:6:43",
                            "type": ""
                          }
                        ],
                        "src": "9592:523:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10236:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10246:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10258:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10269:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10254:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10254:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10246:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10288:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10303:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10319:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10324:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "10315:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10315:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10328:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "10311:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10311:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10299:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10299:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10281:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10281:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10281:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IWETH9_$7263__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10205:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10216:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10227:4:43",
                            "type": ""
                          }
                        ],
                        "src": "10120:218:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10447:352:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10493:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10502:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10505:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10495:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10495:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10495:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10468:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10477:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10464:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10464:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10489:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10460:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10460:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "10457:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10518:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10541:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10528:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10528:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10518:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10560:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10590:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10601:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10586:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10586:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10573:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10573:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10564:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10639:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10614:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10614:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10614:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10654:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10664:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10654:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10678:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10710:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10721:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10706:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10706:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10693:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10693:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10682:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10759:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10734:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10734:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10734:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10776:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10786:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10776:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10397:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10408:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10420:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10428:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10436:6:43",
                            "type": ""
                          }
                        ],
                        "src": "10343:456:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10903:89:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10913:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10925:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10936:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10921:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10921:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10913:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10955:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10970:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10978:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10966:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10966:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10948:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10948:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10948:38:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10872:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10883:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10894:4:43",
                            "type": ""
                          }
                        ],
                        "src": "10804:188:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11112:953:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11122:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11136:7:43"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11145:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "11132:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11132:23:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11126:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11180:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11189:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11192:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11182:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11182:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11182:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11171:2:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11175:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11167:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11167:12:43"
                              },
                              "nodeType": "YulIf",
                              "src": "11164:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11205:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11228:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11215:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11215:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11205:6:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11278:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11287:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11290:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11280:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11280:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11280:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11258:2:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11266:2:43",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "11262:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11262:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11254:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11254:16:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11272:4:43",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11250:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11250:27:43"
                              },
                              "nodeType": "YulIf",
                              "src": "11247:47:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11303:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11323:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11317:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11317:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11307:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11335:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11357:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11365:4:43",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11353:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11353:17:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11339:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11445:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "11447:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11447:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11447:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11388:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11400:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11385:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11385:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11424:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11436:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11421:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11421:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "11382:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11382:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "11379:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11483:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11487:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11476:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11476:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11476:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11507:45:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11537:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11548:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11533:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11533:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11520:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11520:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11511:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11583:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11561:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11561:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11561:28:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11605:6:43"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11613:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11598:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11598:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11598:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11628:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11660:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11671:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11656:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11656:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11643:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11643:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11632:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11706:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11684:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11684:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11684:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11734:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11742:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11730:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11730:15:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11747:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11723:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11723:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11723:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11764:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11796:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11807:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11792:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11792:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11779:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11779:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11768:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11845:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11820:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11820:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11820:33:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11873:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11881:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11869:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11869:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11886:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11862:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11862:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11862:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11903:49:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11935:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11946:4:43",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11931:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11931:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11918:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11918:34:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "11907:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11985:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "11961:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11961:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11961:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12013:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12021:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12009:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12009:15:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12026:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12002:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12002:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12002:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12043:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "12053:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12043:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_struct$_RedeemOpts_$7490_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11070:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11081:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11093:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11101:6:43",
                            "type": ""
                          }
                        ],
                        "src": "10997:1068:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12157:301:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12203:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12212:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12215:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12205:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12205:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12205:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12178:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12187:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12174:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12174:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12199:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12170:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12170:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "12167:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12228:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12254:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12241:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12241:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12232:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12298:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12273:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12273:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12273:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12313:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12323:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12313:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12337:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12369:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12380:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12365:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12365:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12352:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12352:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12341:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12418:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12393:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12393:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12393:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12435:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "12445:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12435:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12115:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12126:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12138:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12146:6:43",
                            "type": ""
                          }
                        ],
                        "src": "12070:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12562:95:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12572:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12584:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12595:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12580:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12580:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12572:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12614:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12629:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12637:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12625:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12625:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12607:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12607:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12607:44:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint40__to_t_uint40__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12531:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12542:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12553:4:43",
                            "type": ""
                          }
                        ],
                        "src": "12463:194:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12804:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12814:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12826:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12837:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12822:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12822:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12814:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12856:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12871:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12887:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12892:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "12883:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12883:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12896:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "12879:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12879:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12867:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12867:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12849:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12849:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12849:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12920:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12931:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12916:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12916:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12936:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12909:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12909:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12909:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256__to_t_address_t_int256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12765:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12776:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12784:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12795:4:43",
                            "type": ""
                          }
                        ],
                        "src": "12662:287:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13111:848:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13158:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13167:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13170:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13160:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13160:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13160:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13132:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13141:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13128:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13128:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13153:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13124:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13124:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13121:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13183:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13209:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13196:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13196:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "13187:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13253:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13228:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13228:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13228:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13268:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13278:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13268:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13292:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13324:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13335:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13320:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13320:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13307:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13307:32:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13296:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13373:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13348:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13348:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13348:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13390:17:43",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "13400:7:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13390:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13416:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13443:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13454:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13439:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13439:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13426:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13426:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "13416:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13467:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13494:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13505:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13490:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13490:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13477:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13477:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "13467:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13518:47:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13549:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13560:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13545:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13545:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13532:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13532:33:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13522:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13574:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13584:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13578:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13629:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13638:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13641:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13631:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13631:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13631:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13617:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13625:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13614:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13614:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13611:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13654:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13668:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13679:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13664:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13664:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "13658:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13734:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13743:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13746:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13736:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13736:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13736:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13713:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13717:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13709:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13709:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13724:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13705:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13705:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13698:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13698:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13695:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13759:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13786:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13773:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13773:16:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13763:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13816:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13825:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13828:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13818:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13818:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13818:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13804:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13812:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13801:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13801:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13798:34:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13882:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13891:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13894:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13884:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13884:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13884:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13855:2:43"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "13859:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13851:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13851:15:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13868:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13847:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13847:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13873:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13844:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13844:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "13841:57:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13907:21:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13921:2:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13925:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13917:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13917:11:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "13907:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13937:16:43",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "13947:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "13937:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13037:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13048:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13060:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13068:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13076:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13084:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13092:6:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "13100:6:43",
                            "type": ""
                          }
                        ],
                        "src": "12954:1005:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14063:103:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14073:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14085:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14096:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14081:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14081:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14073:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14115:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14130:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14142:3:43",
                                            "type": "",
                                            "value": "224"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14147:10:43",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "14138:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14138:20:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14126:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14126:33:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14108:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14108:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14108:52:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14032:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14043:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14054:4:43",
                            "type": ""
                          }
                        ],
                        "src": "13964:202:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14203:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14220:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14227:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14232:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "14223:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14223:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14213:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14213:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14213:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14260:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14263:4:43",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14253:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14253:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14253:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14284:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14287:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "14277:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14277:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14277:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14171:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14485:244:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14495:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14507:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14518:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14503:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14503:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14495:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14537:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14552:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14568:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14573:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "14564:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14564:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14577:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "14560:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14560:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14548:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14548:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14530:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14530:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14530:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14601:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14612:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14597:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14597:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14617:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14590:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14590:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14590:34:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14658:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "14660:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14660:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14660:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14646:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14654:1:43",
                                        "type": "",
                                        "value": "5"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "14643:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14643:13:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14636:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14636:21:43"
                              },
                              "nodeType": "YulIf",
                              "src": "14633:47:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14700:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14711:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14696:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14696:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14716:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14689:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14689:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14689:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2763_t_int256_t_enum$_TokenType_$4834__to_t_address_t_int256_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14438:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14449:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14457:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14465:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14476:4:43",
                            "type": ""
                          }
                        ],
                        "src": "14303:426:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14873:604:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14920:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14929:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14932:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14922:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14922:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14922:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14894:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14903:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14890:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14890:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14915:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14886:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14886:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "14883:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14945:36:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14971:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14958:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14958:23:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14949:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "15015:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14990:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14990:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14990:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15030:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15040:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15030:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15054:42:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15081:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15092:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15077:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15077:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15064:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15064:32:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15054:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15105:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15136:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15147:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15132:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15132:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15119:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15119:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15109:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15160:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15170:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15164:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15215:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15224:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15227:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15217:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15217:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15217:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15203:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15211:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15200:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15200:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15197:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15240:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15271:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15282:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15267:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15267:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15291:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15250:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15250:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "15240:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15308:48:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15341:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15352:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15337:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15337:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15324:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15324:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15312:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15385:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15394:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15397:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15387:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15387:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15387:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15371:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15381:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15368:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15368:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15365:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15410:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15441:9:43"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15452:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15437:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15437:24:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15463:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15420:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15420:51:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "15410:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14815:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14826:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14838:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14846:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14854:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14862:6:43",
                            "type": ""
                          }
                        ],
                        "src": "14734:743:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15578:292:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15624:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15633:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15636:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15626:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15626:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15626:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15599:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15608:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15595:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15595:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15620:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15591:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15591:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15588:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15649:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15672:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15659:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15659:23:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15649:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15691:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15722:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15733:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15718:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15718:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15705:12:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15705:32:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15695:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15780:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15789:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15792:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15782:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15782:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15782:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15752:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15760:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15749:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15749:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "15746:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15805:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15836:9:43"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15847:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15832:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15832:22:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15856:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15815:16:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15815:49:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15805:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15536:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15547:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15559:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15567:6:43",
                            "type": ""
                          }
                        ],
                        "src": "15482:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16077:298:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16087:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16099:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16110:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16095:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16095:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16087:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16130:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16145:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16153:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16141:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16141:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16123:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16123:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16123:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16181:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16192:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16177:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16177:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16201:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16209:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16197:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16197:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16170:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16170:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16170:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16243:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16254:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16239:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16239:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16259:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16232:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16232:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16232:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16286:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16297:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16282:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16282:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16302:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16275:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16275:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16275:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16329:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16340:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16325:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16325:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "16360:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "16353:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16353:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "16346:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16346:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16318:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16318:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16318:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint40_t_int256_t_uint256_t_bool__to_t_uint16_t_uint256_t_int256_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16014:9:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16025:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16033:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16041:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16049:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16057:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16068:4:43",
                            "type": ""
                          }
                        ],
                        "src": "15875:500:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16460:103:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16506:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16515:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16518:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16508:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16508:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16508:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16481:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16490:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16477:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16477:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16502:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16473:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16473:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "16470:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16531:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16547:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16541:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16541:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16531:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16426:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16437:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16449:6:43",
                            "type": ""
                          }
                        ],
                        "src": "16380:183:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16600:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16617:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16624:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16629:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "16620:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16620:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16610:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16610:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16610:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16657:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16660:4:43",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16650:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16650:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16650:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16681:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16684:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "16674:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16674:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16674:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "16568:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16751:502:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16761:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16779:3:43",
                                        "type": "",
                                        "value": "255"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16784:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "16775:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16775:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16788:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "16771:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16771:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16765:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16799:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16813:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16816:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16809:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16809:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16803:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16827:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "16841:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16844:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16837:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16837:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "16831:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16894:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "16896:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16896:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16896:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "16866:2:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16870:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16862:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16862:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "16878:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "16885:2:43"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "16889:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "16881:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16881:10:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "16875:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16875:17:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "16858:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16858:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "16855:61:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16925:21:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16939:3:43",
                                    "type": "",
                                    "value": "255"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16944:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "16935:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16935:11:43"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "16929:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16955:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "16969:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16972:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16965:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16965:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "16959:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17024:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17026:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17026:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17026:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "16994:2:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "16998:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16990:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16990:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17007:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "17015:2:43"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "17019:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sdiv",
                                          "nodeType": "YulIdentifier",
                                          "src": "17010:4:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17010:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17003:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17003:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "16986:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16986:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "16983:63:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17055:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17069:1:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17072:1:43",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17065:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17065:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_6",
                                  "nodeType": "YulTypedName",
                                  "src": "17059:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17124:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17126:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17126:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17126:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulIdentifier",
                                        "src": "17094:2:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17098:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17090:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17090:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "17107:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "17115:2:43"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "17119:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sdiv",
                                          "nodeType": "YulIdentifier",
                                          "src": "17110:4:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17110:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17103:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17103:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17086:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17086:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17083:63:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17196:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17198:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17198:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17198:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulIdentifier",
                                        "src": "17166:2:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "17170:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17162:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17162:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "17179:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "17187:2:43"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "17191:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sdiv",
                                          "nodeType": "YulIdentifier",
                                          "src": "17182:4:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17182:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17175:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17175:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17158:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17158:37:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17155:63:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17227:20:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17242:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17245:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "17238:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17238:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "17227:7:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "16730:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "16733:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "16739:7:43",
                            "type": ""
                          }
                        ],
                        "src": "16700:553:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17290:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17307:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17314:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17319:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "17310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17310:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17300:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17300:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17300:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17347:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17350:4:43",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17340:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17340:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17340:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17371:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17374:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "17364:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17364:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17364:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "17258:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17435:148:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17458:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "17460:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17460:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17460:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17455:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17448:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17448:9:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17445:35:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17531:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17533:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17533:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17533:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "17499:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17506:3:43",
                                            "type": "",
                                            "value": "255"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17511:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "17502:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17502:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "17496:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17496:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17519:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17526:1:43",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "17522:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17522:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "17516:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17516:13:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17492:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17492:38:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17489:64:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17562:15:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17572:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17575:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sdiv",
                                  "nodeType": "YulIdentifier",
                                  "src": "17567:4:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17567:10:43"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17562:1:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17420:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17423:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17429:1:43",
                            "type": ""
                          }
                        ],
                        "src": "17390:193:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17643:325:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17653:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17667:1:43",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "17670:4:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "17663:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17663:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "17653:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17684:38:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "17714:4:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17720:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17710:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17710:12:43"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "17688:18:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17761:31:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17763:27:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "17777:6:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17785:4:43",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "17773:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17773:17:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "17763:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "17741:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17734:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17734:26:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17731:61:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17851:111:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17872:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "17879:3:43",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "17884:10:43",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "17875:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17875:20:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17865:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17865:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17865:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17916:1:43",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17919:4:43",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17909:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17909:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17909:15:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17944:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17947:4:43",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17937:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17937:15:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17937:15:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "17807:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "17830:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17838:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17827:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17827:14:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "17804:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17804:38:43"
                              },
                              "nodeType": "YulIf",
                              "src": "17801:161:43"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "17623:4:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "17632:6:43",
                            "type": ""
                          }
                        ],
                        "src": "17588:380:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18025:116:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18084:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18086:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18086:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18086:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18056:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "18049:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18049:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "18042:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18042:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18064:1:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "18075:1:43",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "18071:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18071:6:43"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18079:1:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "18067:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18067:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18061:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18061:21:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18038:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18038:45:43"
                              },
                              "nodeType": "YulIf",
                              "src": "18035:71:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18115:20:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18130:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18133:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "18126:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18126:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "18115:7:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18004:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18007:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "18013:7:43",
                            "type": ""
                          }
                        ],
                        "src": "17973:168:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18192:74:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18215:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "18217:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18217:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18217:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18212:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18205:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18205:9:43"
                              },
                              "nodeType": "YulIf",
                              "src": "18202:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18246:14:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18255:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18258:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "18251:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18251:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "18246:1:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18177:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18180:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "18186:1:43",
                            "type": ""
                          }
                        ],
                        "src": "18146:120:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18488:299:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18498:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18510:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18521:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18506:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18506:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18498:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18541:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18556:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18564:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18552:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18552:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18534:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18534:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18534:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18592:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18603:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18588:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18588:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18608:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18581:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18581:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18581:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18635:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18646:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18631:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18631:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18655:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18663:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18651:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18651:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18624:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18624:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18624:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18697:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18708:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18693:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18693:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "18717:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18725:10:43",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18713:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18713:23:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18686:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18686:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18686:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18757:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18768:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18753:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18753:19:43"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "18774:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18746:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18746:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18746:35:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18425:9:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18436:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18444:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18452:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18460:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18468:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18479:4:43",
                            "type": ""
                          }
                        ],
                        "src": "18271:516:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18850:102:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18860:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "18875:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18869:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18869:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "18860:5:43"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18930:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18939:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18942:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18932:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18932:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18932:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "18904:5:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "18915:5:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "18922:4:43",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "18911:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18911:16:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "18901:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18901:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18894:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18894:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "18891:55:43"
                            }
                          ]
                        },
                        "name": "abi_decode_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "18829:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18840:5:43",
                            "type": ""
                          }
                        ],
                        "src": "18792:160:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19087:258:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19134:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19143:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19146:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19136:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19136:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19136:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19108:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19117:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19104:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19104:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19129:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19100:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19100:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "19097:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19159:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19175:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19169:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19169:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "19159:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19194:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19214:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19225:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19210:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19210:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19204:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19204:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "19194:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19238:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19280:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19291:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19276:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19276:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "19248:27:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19248:47:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "19238:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19304:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19324:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19335:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19320:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19320:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19314:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19314:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "19304:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint8t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19029:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19040:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19052:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19060:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19068:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "19076:6:43",
                            "type": ""
                          }
                        ],
                        "src": "18957:388:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19589:359:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19599:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19611:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19622:3:43",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19607:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19607:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19599:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19642:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19657:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19665:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19653:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19653:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19635:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19635:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19635:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19693:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19704:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19689:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19689:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19709:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19682:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19682:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19682:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19736:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19747:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19732:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19732:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19756:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19764:12:43",
                                        "type": "",
                                        "value": "0xffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19752:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19752:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19725:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19725:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19725:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19798:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19809:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19794:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19794:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "19818:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19826:10:43",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19814:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19814:23:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19787:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19787:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19787:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19858:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19869:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19854:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19854:19:43"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19875:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19847:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19847:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19847:35:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19902:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19913:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19898:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19898:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value5",
                                            "nodeType": "YulIdentifier",
                                            "src": "19933:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19926:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19926:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "19919:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19919:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19891:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19891:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19891:51:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256_t_bool__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19518:9:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "19529:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "19537:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "19545:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19553:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19561:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19569:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19580:4:43",
                            "type": ""
                          }
                        ],
                        "src": "19350:598:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20065:279:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20111:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20120:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20123:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20113:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20113:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20113:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20086:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20095:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20082:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20082:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20107:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20078:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20078:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "20075:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20136:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20155:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20149:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20149:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "20140:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "20198:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint88",
                                  "nodeType": "YulIdentifier",
                                  "src": "20174:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20174:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20174:30:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20213:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "20223:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20213:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20237:57:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20279:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20290:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20275:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20275:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "20247:27:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20247:47:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "20237:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20303:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20323:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20334:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20319:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20319:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20313:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20313:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "20303:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint88t_uint8t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20015:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "20026:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20038:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20046:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20054:6:43",
                            "type": ""
                          }
                        ],
                        "src": "19953:391:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20523:236:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20540:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20551:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20533:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20533:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20533:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20574:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20585:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20570:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20570:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20590:2:43",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20563:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20563:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20563:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20613:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20624:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20609:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20609:18:43"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20629:34:43",
                                    "type": "",
                                    "value": "Initializable: contract is alrea"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20602:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20602:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20602:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20684:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20695:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20680:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20680:18:43"
                                  },
                                  {
                                    "hexValue": "647920696e697469616c697a6564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20700:16:43",
                                    "type": "",
                                    "value": "dy initialized"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20673:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20673:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20673:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20726:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20738:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20749:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20734:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20734:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20726:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20500:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20514:4:43",
                            "type": ""
                          }
                        ],
                        "src": "20349:410:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20831:114:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20875:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "20877:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20877:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20877:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "20847:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20855:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20844:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20844:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "20841:56:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20906:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20922:1:43",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "20925:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "20918:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20918:14:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20934:4:43",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20914:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20914:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "20906:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_uint8_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "20811:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "20822:4:43",
                            "type": ""
                          }
                        ],
                        "src": "20764:181:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21023:604:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21072:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21081:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21084:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21074:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21074:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21074:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "21051:6:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "21059:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21047:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21047:17:43"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "21066:3:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21043:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21043:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21036:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21036:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21033:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21097:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21113:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21107:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21107:13:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21101:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21129:14:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21139:4:43",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "21133:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21152:69:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21217:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_uint8_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "21179:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21179:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "21163:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21163:58:43"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "21156:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21230:16:43",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "21243:3:43"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21234:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "21262:3:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21267:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21255:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21255:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21255:15:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21279:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "21290:3:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21295:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21286:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21286:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "21279:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21307:46:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "21329:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "21341:1:43",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "21344:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "21337:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21337:10:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21325:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21325:23:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21350:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21321:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21321:32:43"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "21311:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21381:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21390:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21393:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21383:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21383:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21383:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21368:6:43"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "21376:3:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21365:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21365:15:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21362:35:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21406:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21421:6:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21429:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21417:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21417:15:43"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "21410:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21497:101:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "21518:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "21551:3:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_uint8_fromMemory",
                                            "nodeType": "YulIdentifier",
                                            "src": "21523:27:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21523:32:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21511:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21511:45:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21511:45:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21569:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "21580:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "21585:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21576:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21576:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "21569:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "21452:3:43"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21457:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21449:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21449:15:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "21465:23:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21467:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "21478:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "21483:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21474:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21474:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "21467:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "21445:3:43",
                                "statements": []
                              },
                              "src": "21441:157:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21607:14:43",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "21616:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "21607:5:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint8_dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "20997:6:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "21005:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "21013:5:43",
                            "type": ""
                          }
                        ],
                        "src": "20950:677:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21748:1439:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21794:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21803:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21806:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21796:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21796:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21796:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "21769:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21778:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "21765:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21765:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21790:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21761:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21761:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21758:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21819:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21839:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21833:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21833:16:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "21823:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21858:28:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21868:18:43",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21862:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21913:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21922:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21925:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21915:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21915:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21915:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21901:6:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21909:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21898:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21898:14:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21895:34:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21938:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21952:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "21963:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21948:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21948:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "21942:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22012:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22021:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22024:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22014:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22014:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22014:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "21990:7:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "21999:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "21986:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21986:16:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22004:6:43",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21982:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21982:29:43"
                              },
                              "nodeType": "YulIf",
                              "src": "21979:49:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22037:35:43",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_7709",
                                  "nodeType": "YulIdentifier",
                                  "src": "22050:20:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22050:22:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "22041:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22088:5:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22123:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22095:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22095:31:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22081:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22081:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22081:46:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22147:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22154:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22143:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22143:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22191:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22195:2:43",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22187:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22187:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22159:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22159:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22136:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22136:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22136:64:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22220:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22227:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22216:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22216:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22264:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22268:2:43",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22260:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22260:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22232:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22232:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22209:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22209:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22209:64:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22293:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22300:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22289:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22289:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22337:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22341:2:43",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22333:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22333:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22305:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22305:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22282:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22282:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22282:64:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22366:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22373:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22362:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22362:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22411:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22415:3:43",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22407:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22407:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22379:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22379:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22355:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22355:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22355:66:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22441:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22448:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22437:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22437:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22486:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22490:3:43",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22482:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22482:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22454:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22454:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22430:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22430:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22430:66:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22516:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22523:3:43",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22512:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22512:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22561:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22565:3:43",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22557:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22557:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22529:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22529:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22505:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22505:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22505:66:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22591:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22598:3:43",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22587:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22587:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22636:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22640:3:43",
                                            "type": "",
                                            "value": "224"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22632:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22632:12:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22604:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22604:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22580:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22580:66:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22580:66:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22655:13:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22665:3:43",
                                "type": "",
                                "value": "256"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "22659:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22688:5:43"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "22695:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22684:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22684:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22732:2:43"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "22736:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22728:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22728:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22700:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22700:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22677:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22677:64:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22677:64:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22750:13:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22760:3:43",
                                "type": "",
                                "value": "288"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "22754:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22772:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22798:2:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "22802:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22794:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22794:11:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22788:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22788:18:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22776:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22835:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22844:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22847:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22837:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22837:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22837:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22821:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22831:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22818:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22818:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "22815:36:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22871:5:43"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "22878:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22867:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22867:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "22925:2:43"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "22929:8:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22921:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22921:17:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22940:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_uint8_dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "22883:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22883:65:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22860:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22860:89:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22860:89:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22958:13:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22968:3:43",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "22962:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22980:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23006:2:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23010:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23002:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23002:11:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22996:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22996:18:43"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22984:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23043:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23052:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23055:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23045:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23045:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23045:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "23029:8:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23039:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23026:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23026:16:43"
                              },
                              "nodeType": "YulIf",
                              "src": "23023:36:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "23079:5:43"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "23086:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23075:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23075:14:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "23133:2:43"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "23137:8:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "23129:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23129:17:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "23148:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_uint8_dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "23091:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23091:65:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23068:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23068:89:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23068:89:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23166:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "23176:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "23166:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_CashGroupSettings_$4929_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21714:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "21725:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21737:6:43",
                            "type": ""
                          }
                        ],
                        "src": "21632:1555:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23366:166:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23383:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23394:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23376:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23376:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23376:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23417:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23428:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23413:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23413:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23433:2:43",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23406:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23406:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23406:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23456:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23467:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23452:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23452:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c69642063757272656e6379",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23472:18:43",
                                    "type": "",
                                    "value": "Invalid currency"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23445:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23445:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23445:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23500:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23512:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23523:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23508:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23508:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23500:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23343:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23357:4:43",
                            "type": ""
                          }
                        ],
                        "src": "23192:340:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23711:166:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23728:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23739:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23721:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23721:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23721:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23762:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23773:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23758:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23758:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23778:2:43",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23751:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23751:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23751:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23801:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23812:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23797:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23797:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c6964206d61747572697479",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23817:18:43",
                                    "type": "",
                                    "value": "Invalid maturity"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23790:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23790:46:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23790:46:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23845:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23857:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23868:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23853:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23853:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23845:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23688:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23702:4:43",
                            "type": ""
                          }
                        ],
                        "src": "23537:340:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23973:544:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24019:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24028:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24031:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24021:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24021:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24021:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "23994:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24003:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "23990:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23990:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24015:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23986:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23986:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "23983:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24044:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24064:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24058:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24058:16:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "24048:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24117:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24126:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24129:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24119:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24119:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24119:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "24089:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24097:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24086:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24086:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "24083:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24142:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24156:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "24167:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24152:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24152:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "24146:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24222:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24231:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24234:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24224:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24224:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24224:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "24201:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24205:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24197:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24197:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "24212:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "24193:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24193:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "24186:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24186:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "24183:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24247:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "24263:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24257:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24257:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "24251:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24275:61:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "24332:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "24304:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24304:31:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24288:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24288:48:43"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "24279:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "24352:5:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24359:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24345:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24345:17:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24345:17:43"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "24408:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24417:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24420:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "24410:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24410:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24410:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "24385:2:43"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "24389:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24381:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24381:11:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24394:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24377:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24377:20:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "24399:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "24374:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24374:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "24371:53:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "24459:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24463:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24455:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24455:11:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "24472:5:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24479:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24468:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24468:14:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "24484:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24433:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24433:54:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24433:54:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24496:15:43",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "24506:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "24496:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23939:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "23950:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23962:6:43",
                            "type": ""
                          }
                        ],
                        "src": "23882:635:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24911:367:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "24928:3:43"
                                  },
                                  {
                                    "hexValue": "577261707065642066",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24933:11:43",
                                    "type": "",
                                    "value": "Wrapped f"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24921:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24921:24:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24921:24:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24954:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24974:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24968:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24968:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "24958:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25016:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25024:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25012:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25012:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "25035:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25040:1:43",
                                        "type": "",
                                        "value": "9"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25031:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25031:11:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25044:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "24990:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24990:61:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24990:61:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25060:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25074:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25079:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25070:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25070:16:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25064:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25106:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25110:1:43",
                                        "type": "",
                                        "value": "9"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25102:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25102:10:43"
                                  },
                                  {
                                    "hexValue": "204020",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25114:5:43",
                                    "type": "",
                                    "value": " @ "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25095:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25095:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25095:25:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25129:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25151:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25145:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25145:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25133:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25193:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25201:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25189:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25189:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25212:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25216:2:43",
                                        "type": "",
                                        "value": "12"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25208:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25208:11:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25221:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25167:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25167:63:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25167:63:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25239:33:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25254:2:43"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25258:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25250:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25250:17:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25269:2:43",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25246:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25246:26:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25239:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b_t_string_memory_ptr_t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "24879:3:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "24884:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24892:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "24903:3:43",
                            "type": ""
                          }
                        ],
                        "src": "24522:756:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25672:356:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25689:3:43"
                                  },
                                  {
                                    "hexValue": "7766",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25694:4:43",
                                    "type": "",
                                    "value": "wf"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25682:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25682:17:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25682:17:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25708:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "25728:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25722:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25722:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "25712:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "25770:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25778:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25766:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25766:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "25789:3:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25794:1:43",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25785:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25785:11:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25798:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25744:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25744:61:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25744:61:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25814:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "25828:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25833:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25824:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25824:16:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25818:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25860:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25864:1:43",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25856:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25856:10:43"
                                  },
                                  {
                                    "hexValue": "3a",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25868:3:43",
                                    "type": "",
                                    "value": ":"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25849:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25849:23:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25849:23:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25881:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25903:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25897:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25897:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25885:8:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25945:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25953:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25941:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25941:17:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "25964:2:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25968:1:43",
                                        "type": "",
                                        "value": "3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25960:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25960:10:43"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25972:8:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "25919:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25919:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25919:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25990:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "26005:2:43"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "26009:8:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26001:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26001:17:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26020:1:43",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25997:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25997:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "25990:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476_t_string_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "25640:3:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "25645:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25653:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "25664:3:43",
                            "type": ""
                          }
                        ],
                        "src": "25283:745:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26207:226:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26224:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26235:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26217:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26217:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26217:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26258:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26269:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26254:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26254:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26274:2:43",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26247:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26247:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26247:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26297:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26308:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26293:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26293:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26313:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer to the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26286:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26286:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26286:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26368:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26379:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26364:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26364:18:43"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26384:6:43",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26357:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26357:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26357:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26400:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26412:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26423:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26408:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26408:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26400:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26184:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26198:4:43",
                            "type": ""
                          }
                        ],
                        "src": "26033:400:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26612:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26629:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26640:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26622:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26622:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26622:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26663:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26674:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26659:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26659:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26679:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26652:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26652:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26652:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26702:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26713:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26698:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26698:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e736665722066726f6d20746865207a65726f2061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26718:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer from the zero a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26691:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26691:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26691:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26773:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26784:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26769:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26769:18:43"
                                  },
                                  {
                                    "hexValue": "646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26789:8:43",
                                    "type": "",
                                    "value": "ddress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26762:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26762:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26762:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26807:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26819:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26830:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26815:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26815:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26807:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26589:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26603:4:43",
                            "type": ""
                          }
                        ],
                        "src": "26438:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27019:234:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27036:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27047:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27029:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27029:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27029:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27070:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27081:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27066:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27066:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27086:2:43",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27059:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27059:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27059:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27109:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27120:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27105:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27105:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27125:34:43",
                                    "type": "",
                                    "value": "ERC777: caller is not an operato"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27098:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27098:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27098:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27180:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27191:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27176:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27176:18:43"
                                  },
                                  {
                                    "hexValue": "7220666f7220686f6c646572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27196:14:43",
                                    "type": "",
                                    "value": "r for holder"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27169:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27169:42:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27169:42:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27220:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27232:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27243:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27228:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27228:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27220:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26996:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27010:4:43",
                            "type": ""
                          }
                        ],
                        "src": "26845:408:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27432:161:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27449:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27460:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27442:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27442:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27442:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27483:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27494:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27479:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27479:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27499:2:43",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27472:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27472:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27472:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27522:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27533:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27518:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27518:18:43"
                                  },
                                  {
                                    "hexValue": "4d6178204465706f736974",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27538:13:43",
                                    "type": "",
                                    "value": "Max Deposit"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27511:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27511:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27511:41:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27561:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27573:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27584:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27569:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27569:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27561:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27409:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27423:4:43",
                            "type": ""
                          }
                        ],
                        "src": "27258:335:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27727:119:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27737:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27749:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27760:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27745:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27745:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27737:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27779:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "27790:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27772:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27772:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27772:25:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27817:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27828:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27813:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27813:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27833:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27806:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27806:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27806:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27688:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "27699:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "27707:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27718:4:43",
                            "type": ""
                          }
                        ],
                        "src": "27598:248:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28025:226:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28042:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28053:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28035:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28035:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28035:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28076:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28087:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28072:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28072:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28092:2:43",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28065:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28065:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28065:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28115:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28126:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28111:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28111:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617574686f72697a696e672073656c66206173206f706572",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28131:34:43",
                                    "type": "",
                                    "value": "ERC777: authorizing self as oper"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28104:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28104:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28104:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28186:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28197:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28182:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28182:18:43"
                                  },
                                  {
                                    "hexValue": "61746f72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28202:6:43",
                                    "type": "",
                                    "value": "ator"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28175:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28175:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28175:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28218:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28230:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28241:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28226:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28226:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28218:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28002:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28016:4:43",
                            "type": ""
                          }
                        ],
                        "src": "27851:400:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28430:156:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28447:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28458:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28440:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28440:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28440:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28481:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28492:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28477:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28477:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28497:1:43",
                                    "type": "",
                                    "value": "7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28470:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28470:29:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28470:29:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28519:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28530:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28515:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28515:18:43"
                                  },
                                  {
                                    "hexValue": "4d617475726564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28535:9:43",
                                    "type": "",
                                    "value": "Matured"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28508:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28508:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28508:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28554:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28566:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28577:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28562:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28562:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28554:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28407:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28421:4:43",
                            "type": ""
                          }
                        ],
                        "src": "28256:330:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28672:103:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28718:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28727:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28730:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28720:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28720:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28720:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "28693:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28702:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28689:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28689:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28714:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28685:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28685:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "28682:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28743:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28759:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "28753:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28753:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "28743:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28638:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "28649:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "28661:6:43",
                            "type": ""
                          }
                        ],
                        "src": "28591:184:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28829:76:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28851:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "28853:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28853:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28853:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "28845:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "28848:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28842:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28842:8:43"
                              },
                              "nodeType": "YulIf",
                              "src": "28839:34:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28882:17:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "28894:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "28897:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "28890:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28890:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "28882:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "28811:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "28814:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "28820:4:43",
                            "type": ""
                          }
                        ],
                        "src": "28780:125:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29067:348:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "29077:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29089:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29100:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29085:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29085:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29077:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29120:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "29151:6:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "29145:5:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29145:13:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "29138:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29138:21:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "29131:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29131:29:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29113:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29113:48:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29113:48:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29181:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29192:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29177:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29177:20:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29223:6:43"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "29231:4:43",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "29219:3:43"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "29219:17:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "29213:5:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29213:24:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "29206:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29206:32:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "29199:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29199:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29170:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29170:70:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29170:70:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29260:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29271:4:43",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29256:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29256:20:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "29292:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29300:4:43",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "29288:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29288:17:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "29282:5:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29282:24:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29316:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29321:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "29312:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29312:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29325:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "29308:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29308:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29278:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29278:50:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29249:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29249:80:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29249:80:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29349:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29360:4:43",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29345:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29345:20:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "29381:6:43"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "29389:4:43",
                                                "type": "",
                                                "value": "0x60"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "29377:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29377:17:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "29371:5:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29371:24:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29397:10:43",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "29367:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29367:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29338:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29338:71:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29338:71:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr__to_t_struct$_RedeemOpts_$7490_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29036:9:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "29047:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29058:4:43",
                            "type": ""
                          }
                        ],
                        "src": "28910:505:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29493:798:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29537:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29546:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29549:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29539:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29539:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29539:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "29514:3:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29519:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "29510:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29510:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29531:4:43",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29506:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29506:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "29503:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29562:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29582:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29576:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29576:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29566:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29594:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29616:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29624:4:43",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29612:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29612:17:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29598:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29704:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "29706:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29706:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29706:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29647:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29659:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29644:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29644:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29683:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29695:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29680:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29680:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "29641:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29641:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "29638:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29742:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29746:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29735:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29735:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29735:22:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29766:15:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "29775:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "29766:5:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29790:31:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29811:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29805:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29805:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29794:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29855:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "29830:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29830:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29830:33:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29879:6:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29887:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29872:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29872:23:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29872:23:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29904:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29929:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29940:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29925:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29925:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29919:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29919:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "29908:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "29975:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "29953:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29953:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29953:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30003:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30011:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29999:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29999:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "30016:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29992:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29992:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29992:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30044:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30052:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30040:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30040:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "30067:9:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30078:2:43",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30063:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30063:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "30057:5:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30057:25:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30033:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30033:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30033:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30092:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30117:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30128:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30113:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30113:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30107:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30107:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "30096:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30167:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30176:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30179:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30169:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30169:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30169:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "30154:7:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30163:1:43",
                                        "type": "",
                                        "value": "5"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30151:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30151:14:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30144:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30144:22:43"
                              },
                              "nodeType": "YulIf",
                              "src": "30141:42:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30203:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30211:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30199:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30199:15:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "30216:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30192:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30192:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30192:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30244:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30252:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30240:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30240:16:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "30268:9:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30279:3:43",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30264:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30264:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "30258:5:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30258:26:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30233:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30233:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30233:52:43"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_Token_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29464:9:43",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "29475:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "29483:5:43",
                            "type": ""
                          }
                        ],
                        "src": "29420:871:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30440:225:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30487:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30496:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30499:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30489:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30489:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30489:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "30461:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30470:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30457:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30457:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30482:3:43",
                                    "type": "",
                                    "value": "320"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30453:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30453:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "30450:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30512:64:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30557:9:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "30568:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_Token_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "30522:34:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30522:54:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "30512:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30585:74:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30634:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30645:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30630:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30630:19:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "30651:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_Token_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "30595:34:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30595:64:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "30585:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Token_$4890_memory_ptrt_struct$_Token_$4890_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30398:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "30409:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30421:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "30429:6:43",
                            "type": ""
                          }
                        ],
                        "src": "30296:369:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30844:181:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30861:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30872:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30854:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30854:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30854:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30895:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30906:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30891:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30891:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30911:2:43",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30884:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30884:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30884:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30934:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30945:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30930:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30930:18:43"
                                  },
                                  {
                                    "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30950:33:43",
                                    "type": "",
                                    "value": "ReentrancyGuard: reentrant call"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30923:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30923:61:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30923:61:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30993:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31005:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31016:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31001:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31001:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30993:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30821:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30835:4:43",
                            "type": ""
                          }
                        ],
                        "src": "30670:355:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31204:156:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31221:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31232:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31214:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31214:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31214:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31255:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31266:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31251:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31251:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31271:1:43",
                                    "type": "",
                                    "value": "7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31244:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31244:29:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31244:29:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31293:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31304:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31289:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31289:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c6964",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31309:9:43",
                                    "type": "",
                                    "value": "Invalid"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31282:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31282:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31282:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31328:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31340:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31351:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31336:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31336:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31328:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31181:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31195:4:43",
                            "type": ""
                          }
                        ],
                        "src": "31030:330:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31478:974:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31525:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31534:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31537:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31527:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31527:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31527:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "31499:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31508:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31495:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31520:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31491:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31491:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "31488:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31550:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31570:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31564:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31564:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "31554:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31582:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31604:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31612:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31600:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31600:16:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "31586:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31691:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "31693:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31693:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31693:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31634:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31646:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31631:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31631:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31670:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31682:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31667:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31667:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "31628:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31628:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "31625:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31729:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31733:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31722:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31722:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31722:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31753:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31772:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31766:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31766:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "31757:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31815:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint40",
                                  "nodeType": "YulIdentifier",
                                  "src": "31791:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31791:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31791:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31837:6:43"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31845:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31830:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31830:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31830:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31860:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31885:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31896:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31881:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31881:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31875:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31875:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31864:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31961:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31970:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31973:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31963:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31963:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31963:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "31922:7:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "31935:7:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31948:3:43",
                                                "type": "",
                                                "value": "248"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31953:3:43",
                                                "type": "",
                                                "value": "255"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "31944:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31944:13:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "31931:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31931:27:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31919:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31919:40:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31912:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31912:48:43"
                              },
                              "nodeType": "YulIf",
                              "src": "31909:68:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31997:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32005:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31993:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31993:15:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "32010:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31986:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31986:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31986:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32038:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32046:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32034:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32034:15:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "32083:9:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32094:2:43",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32079:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32079:18:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint8_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "32051:27:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32051:47:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32027:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32027:72:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32027:72:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32108:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32133:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32144:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32129:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32129:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32123:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32123:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "32112:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32181:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint16",
                                  "nodeType": "YulIdentifier",
                                  "src": "32157:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32157:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32157:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32209:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32217:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32205:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32205:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32222:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32198:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32198:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32198:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32239:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32264:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32275:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32260:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32260:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32254:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32254:26:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "32243:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32363:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32372:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32375:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32365:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32365:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32365:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "32302:7:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "32315:7:43"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32328:30:43",
                                                "type": "",
                                                "value": "0xffffffffffffffffffffffffffff"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "32324:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32324:35:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "32311:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32311:49:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "32299:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32299:62:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32292:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32292:70:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32289:90:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32399:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32407:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32395:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32395:16:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "32413:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32388:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32388:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32388:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32430:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "32440:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "32430:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_AccountContext_$4940_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31444:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "31455:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31467:6:43",
                            "type": ""
                          }
                        ],
                        "src": "31365:1087:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32595:1552:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32605:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "32615:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "32609:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32662:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32671:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32674:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32664:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32664:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32664:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "32637:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32646:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "32633:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32633:23:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "32658:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32629:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32629:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32626:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32687:30:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32707:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32701:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32701:16:43"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "32691:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32760:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32769:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32772:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32762:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32762:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32762:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "32732:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32740:18:43",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32729:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32729:30:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32726:50:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32785:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32799:9:43"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "32810:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32795:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32795:22:43"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "32789:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32865:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32874:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32877:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32867:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32867:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32867:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "32844:2:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32848:4:43",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32840:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32840:13:43"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "32855:7:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32836:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32836:27:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32829:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32829:35:43"
                              },
                              "nodeType": "YulIf",
                              "src": "32826:55:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32890:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "32906:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32900:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32900:9:43"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "32894:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32918:69:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "32983:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_uint8_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "32945:37:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32945:41:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "32929:15:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32929:58:43"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "32922:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32996:16:43",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "33009:3:43"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33000:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "33028:3:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "33033:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33021:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33021:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33021:15:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33045:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "33056:3:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33061:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33052:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33052:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "33045:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33073:14:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "33083:4:43",
                                "type": "",
                                "value": "0xc0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "33077:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33096:43:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "33118:2:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "33126:2:43"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "33130:2:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "33122:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33122:11:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "33114:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33114:20:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33136:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33110:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33110:29:43"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "33100:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33171:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33180:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33183:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33173:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33173:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33173:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "33154:6:43"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "33162:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33151:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33151:19:43"
                              },
                              "nodeType": "YulIf",
                              "src": "33148:39:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33196:22:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "33211:2:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33215:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33207:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33207:11:43"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "33200:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33283:834:43",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "33339:74:43",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "33357:11:43",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33367:1:43",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulTypedName",
                                              "src": "33361:2:43",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "33392:2:43"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "33396:2:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "33385:6:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33385:14:43"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "33385:14:43"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "33308:7:43"
                                            },
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "33317:3:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "33304:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33304:17:43"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "33323:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "33300:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33300:26:43"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "33297:116:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33426:35:43",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_7716",
                                        "nodeType": "YulIdentifier",
                                        "src": "33439:20:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33439:22:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "33430:5:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "33481:5:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "33494:3:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33488:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33488:10:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33474:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33474:25:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33474:25:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33523:5:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "33530:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33519:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33519:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33545:3:43"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33550:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33541:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33541:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33535:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33535:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33512:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33512:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33512:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33568:12:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33578:2:43",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "33572:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33604:5:43"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "33611:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33600:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33600:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33626:3:43"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33631:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33622:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33622:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33616:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33616:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33593:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33593:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33593:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33649:12:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33659:2:43",
                                      "type": "",
                                      "value": "96"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "33653:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33685:5:43"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "33692:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33681:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33681:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33707:3:43"
                                                },
                                                {
                                                  "name": "_7",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33712:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33703:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33703:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33697:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33697:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33674:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33674:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33674:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33730:13:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33740:3:43",
                                      "type": "",
                                      "value": "128"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "33734:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "33767:5:43"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "33774:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33763:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33763:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33789:3:43"
                                                },
                                                {
                                                  "name": "_8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33794:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "33785:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "33785:12:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "33779:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33779:19:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "33756:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33756:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33756:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33812:13:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "33822:3:43",
                                      "type": "",
                                      "value": "160"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "33816:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "33838:34:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "33863:3:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "33868:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "33859:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33859:12:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "33853:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33853:19:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "33842:7:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "33923:77:43",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "33941:12:43",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33952:1:43",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_10",
                                              "nodeType": "YulTypedName",
                                              "src": "33945:3:43",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "33977:3:43"
                                              },
                                              {
                                                "name": "_10",
                                                "nodeType": "YulIdentifier",
                                                "src": "33982:3:43"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "33970:6:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33970:16:43"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "33970:16:43"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "33898:7:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "33907:1:43",
                                              "type": "",
                                              "value": "3"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "33895:2:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "33895:14:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "33888:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33888:22:43"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "33885:115:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "34024:5:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "34031:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "34020:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34020:14:43"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34036:7:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34013:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34013:31:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34013:31:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "34064:3:43"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "34069:5:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34057:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34057:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34057:18:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34088:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "34099:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34104:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34095:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34095:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "34088:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "33238:3:43"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "33243:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33235:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33235:15:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "33251:23:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "33253:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "33264:3:43"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "33269:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "33260:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33260:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "33253:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "33231:3:43",
                                "statements": []
                              },
                              "src": "33227:890:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34126:15:43",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "34136:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "34126:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32561:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "32572:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "32584:6:43",
                            "type": ""
                          }
                        ],
                        "src": "32457:1690:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34184:95:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34201:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34208:3:43",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34213:10:43",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "34204:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34204:20:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34194:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34194:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34194:31:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34241:1:43",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34244:4:43",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34234:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34234:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34234:15:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34265:1:43",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34268:4:43",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "34258:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34258:15:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34258:15:43"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "34152:127:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34458:223:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34475:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34486:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34468:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34468:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34468:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34509:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34520:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34505:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34505:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34525:2:43",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34498:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34498:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34498:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34548:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34559:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34544:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34544:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207265766f6b696e672073656c66206173206f70657261746f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34564:34:43",
                                    "type": "",
                                    "value": "ERC777: revoking self as operato"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34537:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34537:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34537:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34619:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34630:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34615:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34615:18:43"
                                  },
                                  {
                                    "hexValue": "72",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "34635:3:43",
                                    "type": "",
                                    "value": "r"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34608:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34608:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34608:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34648:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34660:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34671:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34656:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34656:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34648:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34435:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34449:4:43",
                            "type": ""
                          }
                        ],
                        "src": "34284:397:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34813:158:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "34823:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34835:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34846:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34831:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34831:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "34823:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34865:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "34880:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34888:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34876:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34876:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34858:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34858:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34858:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34916:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34927:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34912:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34912:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "34936:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "34952:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "34957:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "34948:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "34948:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "34961:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "34944:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "34944:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34932:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34932:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34905:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34905:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34905:60:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_address__to_t_uint16_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34774:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "34785:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34793:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34804:4:43",
                            "type": ""
                          }
                        ],
                        "src": "34686:285:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35089:191:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35135:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35144:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35147:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "35137:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35137:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35137:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "35110:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35119:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "35106:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35106:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35131:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35102:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35102:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "35099:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35160:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35176:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35170:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35170:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "35160:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35195:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35215:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35226:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35211:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35211:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35205:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35205:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "35195:6:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35239:35:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35259:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35270:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35255:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35255:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35249:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35249:25:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "35239:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int256t_int256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35039:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "35050:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35062:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35070:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35078:6:43",
                            "type": ""
                          }
                        ],
                        "src": "34976:304:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35432:191:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35442:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35454:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35465:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35450:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35450:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35442:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35484:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "35499:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35507:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35495:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35495:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35477:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35477:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35477:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35535:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35546:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35531:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35531:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35551:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35524:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35524:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35524:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35578:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35589:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35574:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35574:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "35608:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "35601:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35601:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "35594:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35594:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35567:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35567:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35567:50:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_int256_t_bool__to_t_uint16_t_int256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35385:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "35396:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "35404:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35412:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35423:4:43",
                            "type": ""
                          }
                        ],
                        "src": "35285:338:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35802:161:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35819:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35830:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35812:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35812:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35812:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35853:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35864:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35849:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35849:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35869:2:43",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35842:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35842:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35842:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35892:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35903:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35888:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35888:18:43"
                                  },
                                  {
                                    "hexValue": "4d75737420536574746c65",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "35908:13:43",
                                    "type": "",
                                    "value": "Must Settle"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35881:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35881:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35881:41:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35931:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35943:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35954:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35939:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35939:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35931:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35779:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "35793:4:43",
                            "type": ""
                          }
                        ],
                        "src": "35628:335:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36142:227:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36159:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36170:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36152:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36152:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36152:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36193:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36204:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36189:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36189:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36209:2:43",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36182:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36182:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36182:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36232:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36243:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36228:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36228:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617070726f76652066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36248:34:43",
                                    "type": "",
                                    "value": "ERC777: approve from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36221:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36221:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36221:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36303:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36314:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36299:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36299:18:43"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36319:7:43",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36292:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36292:35:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36292:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36336:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36348:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36359:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36344:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36344:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36336:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36119:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36133:4:43",
                            "type": ""
                          }
                        ],
                        "src": "35968:401:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36548:225:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36565:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36576:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36558:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36558:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36558:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36599:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36610:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36595:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36595:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36615:2:43",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36588:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36588:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36588:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36638:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36649:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36634:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36634:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20617070726f766520746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36654:34:43",
                                    "type": "",
                                    "value": "ERC777: approve to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36627:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36627:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36627:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36709:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36720:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36705:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36705:18:43"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "36725:5:43",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36698:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36698:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36698:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36740:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36752:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36763:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36748:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36748:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36740:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36525:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36539:4:43",
                            "type": ""
                          }
                        ],
                        "src": "36374:399:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36952:163:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36969:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36980:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36962:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36962:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36962:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37003:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37014:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36999:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36999:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37019:2:43",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36992:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36992:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36992:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37042:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "37053:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37038:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37038:18:43"
                                  },
                                  {
                                    "hexValue": "6643617368206d617475726564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "37058:15:43",
                                    "type": "",
                                    "value": "fCash matured"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37031:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37031:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37031:43:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37083:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37095:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37106:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37091:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37091:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "37083:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36929:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36943:4:43",
                            "type": ""
                          }
                        ],
                        "src": "36778:337:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37181:374:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37191:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37211:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37205:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37205:12:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "37195:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37233:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37238:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37226:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37226:19:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37226:19:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37254:14:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37264:4:43",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37258:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37277:19:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37288:3:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37293:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37284:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37284:12:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "37277:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37305:28:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37323:5:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37330:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37319:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37319:14:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "37309:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37342:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37351:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "37346:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37410:120:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37431:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "37442:6:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37436:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37436:13:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37424:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37424:26:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37424:26:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37463:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37474:3:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "37479:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37470:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37470:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "37463:3:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37495:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "37509:6:43"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "37517:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37505:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37505:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "37495:6:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "37372:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37375:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37369:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37369:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "37383:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37385:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "37394:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37397:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37390:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37390:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "37385:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "37365:3:43",
                                "statements": []
                              },
                              "src": "37361:169:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37539:10:43",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "37546:3:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "37539:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_bytes32_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "37158:5:43",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "37165:3:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "37173:3:43",
                            "type": ""
                          }
                        ],
                        "src": "37120:435:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37821:1525:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37831:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37841:2:43",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37835:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37852:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37870:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37881:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37866:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37866:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37856:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "37900:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "37915:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "37931:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "37936:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "37927:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "37927:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "37940:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "37923:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "37923:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "37911:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37911:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37893:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37893:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37893:51:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37953:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37963:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "37957:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "37985:9:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "37996:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "37981:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37981:18:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38001:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37974:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37974:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37974:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38013:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "38024:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "38017:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38039:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38059:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "38053:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38053:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "38043:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38082:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "38090:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38075:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38075:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38075:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38106:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "38116:2:43",
                                "type": "",
                                "value": "96"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "38110:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38127:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "38138:9:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "38149:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38134:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38134:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "38127:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38161:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "38183:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "38198:1:43",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "38201:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "38194:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "38194:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "38179:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38179:30:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "38211:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38175:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38175:39:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "38165:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38223:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "38241:6:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "38249:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "38237:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38237:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "38227:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38261:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "38270:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "38265:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38329:988:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "38350:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38363:6:43"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38371:9:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "38359:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38359:22:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "38387:2:43",
                                                  "type": "",
                                                  "value": "95"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "38383:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38383:7:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38355:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38355:36:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38343:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38343:49:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38343:49:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38405:23:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "38421:6:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38415:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38415:13:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "38409:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38441:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38451:4:43",
                                      "type": "",
                                      "value": "0xe0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "38445:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38468:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "38484:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38478:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38478:9:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "38472:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "38521:22:43",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x21",
                                              "nodeType": "YulIdentifier",
                                              "src": "38523:16:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "38523:18:43"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "38523:18:43"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "38513:2:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38517:1:43",
                                              "type": "",
                                              "value": "7"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "38510:2:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38510:9:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "38503:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38503:17:43"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "38500:43:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "38563:6:43"
                                        },
                                        {
                                          "name": "_6",
                                          "nodeType": "YulIdentifier",
                                          "src": "38571:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38556:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38556:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38556:18:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38598:6:43"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38606:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38594:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38594:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_4",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38625:2:43"
                                                    },
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38629:2:43"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "38621:3:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "38621:11:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "38615:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38615:18:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38635:6:43",
                                              "type": "",
                                              "value": "0xffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "38611:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38611:31:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38587:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38587:56:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38587:56:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38667:6:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "38675:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38663:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38663:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38690:2:43"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38694:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38686:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38686:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38680:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38680:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38656:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38656:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38656:43:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38723:6:43"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "38731:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38719:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38719:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38746:2:43"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38750:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38742:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38742:11:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38736:5:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38736:18:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38712:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38712:43:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38712:43:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38768:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38778:4:43",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "38772:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38795:38:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "38825:2:43"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "38829:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38821:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38821:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38815:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38815:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "38799:12:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "38862:12:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38880:6:43"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "38888:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38876:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38876:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bool",
                                        "nodeType": "YulIdentifier",
                                        "src": "38846:15:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38846:46:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38846:46:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38905:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38915:4:43",
                                      "type": "",
                                      "value": "0xa0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "38909:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38932:40:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "38964:2:43"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "38968:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38960:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38960:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38954:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38954:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_1",
                                        "nodeType": "YulTypedName",
                                        "src": "38936:14:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "39001:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "39021:6:43"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "39029:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39017:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39017:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bool",
                                        "nodeType": "YulIdentifier",
                                        "src": "38985:15:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38985:48:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38985:48:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "39046:14:43",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "39056:4:43",
                                      "type": "",
                                      "value": "0xc0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "39050:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "39073:40:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "39105:2:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "39109:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39101:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39101:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "39095:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39095:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_2",
                                        "nodeType": "YulTypedName",
                                        "src": "39077:14:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "39137:6:43"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "39145:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39133:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39133:15:43"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "39150:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "39126:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39126:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39126:27:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39166:71:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39205:14:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "39225:6:43"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "39233:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "39221:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39221:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_array_bytes32_dyn",
                                        "nodeType": "YulIdentifier",
                                        "src": "39176:28:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39176:61:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "39166:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39250:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "39264:6:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39272:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39260:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39260:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "39250:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39288:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "39299:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "39304:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39295:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39295:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "39288:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "38291:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "38294:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "38288:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38288:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "38302:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38304:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "38313:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38316:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38309:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38309:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "38304:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "38284:3:43",
                                "statements": []
                              },
                              "src": "38280:1037:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39326:14:43",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "39334:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "39326:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "37782:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "37793:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "37801:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "37812:4:43",
                            "type": ""
                          }
                        ],
                        "src": "37560:1786:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39584:1012:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39594:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39604:2:43",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39598:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39615:32:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39633:9:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39644:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39629:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39629:18:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39619:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39663:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "39678:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "39694:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "39699:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "39690:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "39690:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "39703:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "39686:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39686:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "39674:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39674:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39656:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39656:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39656:51:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39716:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39726:2:43",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "39720:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39748:9:43"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "39759:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39744:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39744:18:43"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39764:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39737:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39737:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39737:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39776:17:43",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "39787:6:43"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "39780:3:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39802:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39822:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39816:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39816:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "39806:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39845:6:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39853:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39838:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39838:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39838:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39869:12:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39879:2:43",
                                "type": "",
                                "value": "96"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "39873:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39890:25:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "39901:9:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "39912:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39897:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39897:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "39890:3:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39924:53:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "39946:9:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "39961:1:43",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "39964:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "39957:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39957:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39942:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39942:30:43"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "39974:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39938:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39938:39:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "39928:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39986:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "40004:6:43"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "40012:2:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40000:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40000:15:43"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "39990:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "40024:10:43",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "40033:1:43",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "40028:1:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40092:475:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40113:3:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40126:6:43"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40134:9:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "40122:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40122:22:43"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "40150:2:43",
                                                  "type": "",
                                                  "value": "95"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "40146:3:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40146:7:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40118:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40118:36:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40106:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40106:49:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40106:49:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40168:23:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40184:6:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40178:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40178:13:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "40172:2:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "40211:6:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40229:2:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "40223:5:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40223:9:43"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "40234:6:43",
                                              "type": "",
                                              "value": "0xffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "40219:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40219:22:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40204:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40204:38:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40204:38:43"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40266:6:43"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40274:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40262:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40262:15:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "_4",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "40303:2:43"
                                                        },
                                                        {
                                                          "name": "_2",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "40307:2:43"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "40299:3:43"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "40299:11:43"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "40293:5:43"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "40293:18:43"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "40286:6:43"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40286:26:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "40279:6:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40279:34:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40255:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40255:59:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40255:59:43"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40327:38:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "40357:2:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40361:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40353:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40353:11:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40347:5:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40347:18:43"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "40331:12:43",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40389:6:43"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40397:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40385:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40385:15:43"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "40402:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40378:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40378:27:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40378:27:43"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40418:69:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "40457:12:43"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40475:6:43"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "40483:2:43"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40471:3:43"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40471:15:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_array_bytes32_dyn",
                                        "nodeType": "YulIdentifier",
                                        "src": "40428:28:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40428:59:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "40418:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40500:25:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40514:6:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "40522:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40510:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40510:15:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "40500:6:43"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40538:19:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40549:3:43"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "40554:2:43"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40545:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40545:12:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "40538:3:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "40054:1:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "40057:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "40051:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40051:13:43"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "40065:18:43",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40067:14:43",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "40076:1:43"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "40079:1:43",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40072:3:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40072:9:43"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "40067:1:43"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "40047:3:43",
                                "statements": []
                              },
                              "src": "40043:524:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40576:14:43",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "40584:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "40576:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "39545:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "39556:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "39564:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "39575:4:43",
                            "type": ""
                          }
                        ],
                        "src": "39351:1245:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40649:80:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40676:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "40678:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40678:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40678:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "40665:1:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "40672:1:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "40668:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40668:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "40662:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40662:13:43"
                              },
                              "nodeType": "YulIf",
                              "src": "40659:39:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40707:16:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "40718:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "40721:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40714:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40714:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "40707:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "40632:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "40635:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "40641:3:43",
                            "type": ""
                          }
                        ],
                        "src": "40601:128:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40781:88:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40812:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "40814:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40814:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40814:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "40797:5:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "40808:1:43",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "40804:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "40804:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "40794:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40794:17:43"
                              },
                              "nodeType": "YulIf",
                              "src": "40791:43:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40843:20:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "40854:5:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "40861:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "40850:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40850:13:43"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "40843:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "40763:5:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "40773:3:43",
                            "type": ""
                          }
                        ],
                        "src": "40734:135:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "40912:74:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "40935:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "40937:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40937:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40937:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "40932:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "40925:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40925:9:43"
                              },
                              "nodeType": "YulIf",
                              "src": "40922:35:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40966:14:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "40975:1:43"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "40978:1:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "40971:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "40971:9:43"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "40966:1:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "40897:1:43",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "40900:1:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "40906:1:43",
                            "type": ""
                          }
                        ],
                        "src": "40874:112:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41165:233:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41182:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41193:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41175:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41175:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41175:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41216:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41227:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41212:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41212:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41232:2:43",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41205:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41205:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41205:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41255:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41266:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41251:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41251:18:43"
                                  },
                                  {
                                    "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "41271:34:43",
                                    "type": "",
                                    "value": "Initializable: contract is not i"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41244:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41244:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41244:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41326:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41337:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41322:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41322:18:43"
                                  },
                                  {
                                    "hexValue": "6e697469616c697a696e67",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "41342:13:43",
                                    "type": "",
                                    "value": "nitializing"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41315:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41315:41:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41315:41:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "41365:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41377:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41388:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "41373:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41373:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "41365:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41142:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41156:4:43",
                            "type": ""
                          }
                        ],
                        "src": "40991:407:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41532:175:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "41542:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41554:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41565:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "41550:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41550:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "41542:4:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41577:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41595:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41600:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "41591:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41591:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41604:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "41587:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41587:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41581:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41622:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41637:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41645:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41633:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41633:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41615:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41615:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41615:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41669:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41680:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41665:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41665:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41689:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41697:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41685:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41685:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41658:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41658:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41658:43:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41493:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "41504:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "41512:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41523:4:43",
                            "type": ""
                          }
                        ],
                        "src": "41403:304:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41886:244:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41903:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41914:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41896:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41896:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41896:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41937:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41948:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41933:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41933:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41953:2:43",
                                    "type": "",
                                    "value": "54"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41926:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41926:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41926:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41976:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41987:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41972:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41972:18:43"
                                  },
                                  {
                                    "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "41992:34:43",
                                    "type": "",
                                    "value": "SafeERC20: approve from non-zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41965:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41965:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41965:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42047:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42058:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42043:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42043:18:43"
                                  },
                                  {
                                    "hexValue": "20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "42063:24:43",
                                    "type": "",
                                    "value": " to non-zero allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42036:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42036:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42036:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "42097:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42109:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42120:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42105:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42105:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "42097:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41863:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41877:4:43",
                            "type": ""
                          }
                        ],
                        "src": "41712:418:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42264:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "42274:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42286:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42297:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42282:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42282:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "42274:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42316:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "42331:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42347:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42352:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "42343:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "42343:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42356:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "42339:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42339:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "42327:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42327:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42309:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42309:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42309:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42380:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42391:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42376:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "42396:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42369:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42369:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42369:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "42225:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "42236:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "42244:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "42255:4:43",
                            "type": ""
                          }
                        ],
                        "src": "42135:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42543:145:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "42553:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42565:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42576:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "42561:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42561:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "42553:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42595:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "42610:6:43"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42626:3:43",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "42631:1:43",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "42622:3:43"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "42622:11:43"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42635:1:43",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "42618:3:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42618:19:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "42606:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42606:32:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42588:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42588:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42588:51:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42659:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42670:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42655:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42655:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "42675:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42648:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42648:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42648:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "42504:9:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "42515:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "42523:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "42534:4:43",
                            "type": ""
                          }
                        ],
                        "src": "42414:274:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "42774:170:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "42820:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42829:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "42832:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "42822:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "42822:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "42822:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "42795:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42804:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "42791:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42791:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42816:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "42787:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42787:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "42784:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42845:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "42864:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42858:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42858:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "42849:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "42908:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "42883:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42883:31:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42883:31:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "42923:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "42933:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "42923:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "42740:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "42751:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "42763:6:43",
                            "type": ""
                          }
                        ],
                        "src": "42693:251:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43226:455:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43236:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43254:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43259:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "43250:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43250:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43263:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "43246:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43246:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "43240:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43281:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "43296:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43304:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43292:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43292:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43274:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43274:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43274:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43328:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43339:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43324:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43324:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43348:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43356:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43344:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43344:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43317:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43317:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43317:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43380:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43391:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43376:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "43400:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43408:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43396:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43396:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43369:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43369:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43369:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43432:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43443:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43428:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43428:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "43448:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43421:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43421:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43421:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43475:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43486:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43471:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43471:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43492:3:43",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43464:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43464:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43464:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43505:60:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "43537:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43549:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43560:3:43",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43545:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43545:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43519:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43519:46:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "43509:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43585:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43596:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43581:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43581:19:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "43606:6:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43614:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "43602:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43602:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43574:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43574:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43574:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "43634:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "43660:6:43"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "43668:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43642:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43642:33:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43634:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43155:9:43",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "43166:6:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "43174:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "43182:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "43190:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "43198:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43206:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43217:4:43",
                            "type": ""
                          }
                        ],
                        "src": "42949:732:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43860:180:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43877:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43888:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43870:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43870:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43870:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43911:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43922:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43907:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43907:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43927:2:43",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43900:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43900:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43900:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43950:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43961:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43946:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43946:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "43966:32:43",
                                    "type": "",
                                    "value": "ERC777: insufficient allowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43939:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43939:60:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43939:60:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44008:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44020:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44031:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44016:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44016:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44008:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43837:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43851:4:43",
                            "type": ""
                          }
                        ],
                        "src": "43686:354:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44219:229:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44236:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44247:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44229:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44229:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44229:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44270:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44281:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44266:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44266:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44286:2:43",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44259:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44259:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44259:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44309:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44320:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44305:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44305:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a207472616e7366657220616d6f756e74206578636565647320",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "44325:34:43",
                                    "type": "",
                                    "value": "ERC777: transfer amount exceeds "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44298:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44298:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44298:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44380:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44391:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44376:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44376:18:43"
                                  },
                                  {
                                    "hexValue": "62616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "44396:9:43",
                                    "type": "",
                                    "value": "balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44369:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44369:37:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44369:37:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44415:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44427:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44438:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44423:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44423:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44415:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44196:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44210:4:43",
                            "type": ""
                          }
                        ],
                        "src": "44045:403:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44646:257:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44663:9:43"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44674:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44656:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44656:25:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44656:25:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44701:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44712:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44697:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44697:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44717:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44690:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44690:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44690:30:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "44729:59:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "44761:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44773:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44784:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44769:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44769:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "44743:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44743:45:43"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "44733:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44808:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44819:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44804:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44804:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "44828:6:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44836:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "44824:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44824:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44797:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44797:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44797:50:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "44856:41:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "44882:6:43"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "44890:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "44864:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44864:33:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44856:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44599:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "44610:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "44618:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44626:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44637:4:43",
                            "type": ""
                          }
                        ],
                        "src": "44453:450:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45082:307:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45099:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45110:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45092:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45092:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45092:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45133:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45144:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45129:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45129:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45149:2:43",
                                    "type": "",
                                    "value": "77"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45122:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45122:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45122:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45172:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45183:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45168:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45168:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a20746f6b656e20726563697069656e7420636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45188:34:43",
                                    "type": "",
                                    "value": "ERC777: token recipient contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45161:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45161:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45161:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45243:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45254:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45239:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45239:18:43"
                                  },
                                  {
                                    "hexValue": "20686173206e6f20696d706c656d656e74657220666f7220455243373737546f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45259:34:43",
                                    "type": "",
                                    "value": " has no implementer for ERC777To"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45232:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45232:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45232:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45314:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45325:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45310:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45310:19:43"
                                  },
                                  {
                                    "hexValue": "6b656e73526563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45331:15:43",
                                    "type": "",
                                    "value": "kensRecipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45303:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45303:44:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45303:44:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45356:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45368:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45379:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45364:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45364:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45356:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45059:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45073:4:43",
                            "type": ""
                          }
                        ],
                        "src": "44908:481:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45568:224:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45585:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45596:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45578:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45578:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45578:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45619:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45630:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45615:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45615:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45635:2:43",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45608:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45608:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45608:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45658:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45669:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45654:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45654:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2073656e642066726f6d20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45674:34:43",
                                    "type": "",
                                    "value": "ERC777: send from the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45647:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45647:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45647:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45729:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45740:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45725:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45725:18:43"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "45745:4:43",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45718:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45718:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45718:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45759:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45771:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45782:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45767:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45767:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45759:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45545:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45559:4:43",
                            "type": ""
                          }
                        ],
                        "src": "45394:398:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45971:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45988:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45999:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45981:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45981:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45981:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46022:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46033:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46018:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46018:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46038:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46011:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46011:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46011:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46061:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46072:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46057:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46057:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a2073656e6420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "46077:34:43",
                                    "type": "",
                                    "value": "ERC777: send to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46050:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46050:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46050:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46121:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46133:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46144:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46129:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46129:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46121:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45948:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45962:4:43",
                            "type": ""
                          }
                        ],
                        "src": "45797:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46332:171:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46349:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46360:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46342:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46342:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46342:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46383:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46394:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46379:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46379:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46399:2:43",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46372:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46372:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46372:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46422:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46433:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46418:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46418:18:43"
                                  },
                                  {
                                    "hexValue": "43473a206e6f206d61726b657473206c6973746564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "46438:23:43",
                                    "type": "",
                                    "value": "CG: no markets listed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46411:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46411:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46411:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46471:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46483:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46494:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46479:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46479:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46471:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "46309:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "46323:4:43",
                            "type": ""
                          }
                        ],
                        "src": "46158:345:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "46682:172:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46699:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46710:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46692:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46692:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46692:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46733:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46744:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46729:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46729:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46749:2:43",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46722:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46722:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46722:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "46772:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "46783:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "46768:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "46768:18:43"
                                  },
                                  {
                                    "hexValue": "43473a206d61726b657420696e64657820626f756e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "46788:24:43",
                                    "type": "",
                                    "value": "CG: market index bound"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "46761:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46761:52:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "46761:52:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "46822:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "46834:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "46845:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "46830:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "46830:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "46822:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "46659:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "46673:4:43",
                            "type": ""
                          }
                        ],
                        "src": "46508:346:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47033:169:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47050:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47061:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47043:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47043:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47043:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47084:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47095:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47080:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47080:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47100:2:43",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47073:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47073:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47073:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47123:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47134:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47119:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47119:18:43"
                                  },
                                  {
                                    "hexValue": "43473a206e6f206d61726b657420666f756e64",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47139:21:43",
                                    "type": "",
                                    "value": "CG: no market found"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47112:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47112:49:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47112:49:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47170:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47182:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47193:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47178:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47178:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47170:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47010:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "47024:4:43",
                            "type": ""
                          }
                        ],
                        "src": "46859:343:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47381:182:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47398:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47409:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47391:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47391:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47391:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47432:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47443:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47428:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47428:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47448:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47421:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47421:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47421:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47471:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47482:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "47467:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47467:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "47487:34:43",
                                    "type": "",
                                    "value": "ERC777: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47460:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47460:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47460:62:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "47531:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47543:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47554:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47539:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47539:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "47531:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47358:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "47372:4:43",
                            "type": ""
                          }
                        ],
                        "src": "47207:356:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "47677:794:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "47724:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "47733:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "47736:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "47726:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "47726:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "47726:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "47698:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "47707:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "47694:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47694:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47719:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "47690:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47690:33:43"
                              },
                              "nodeType": "YulIf",
                              "src": "47687:53:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "47749:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47769:2:43",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "47763:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47763:9:43"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "47753:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "47781:34:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "47803:6:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47811:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "47799:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47799:16:43"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "47785:10:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "47890:22:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "47892:16:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "47892:18:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "47892:18:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "47833:10:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "47845:18:43",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "47830:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47830:34:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "47869:10:43"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "47881:6:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "47866:2:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "47866:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "47827:2:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47827:62:43"
                              },
                              "nodeType": "YulIf",
                              "src": "47824:88:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "47928:2:43",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "47932:10:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "47921:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47921:22:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47921:22:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "47952:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "47971:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "47965:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47965:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "47956:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "48012:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "47990:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "47990:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "47990:28:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "48034:6:43"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "48042:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48027:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48027:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48027:21:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "48057:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48082:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48093:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48078:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48078:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "48072:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48072:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "48061:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "48128:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "48106:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48106:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48106:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "48156:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48164:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48152:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48152:15:43"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "48169:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48145:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48145:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48145:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "48186:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48211:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48222:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48207:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48207:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "48201:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48201:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "48190:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "48260:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "48235:24:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48235:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48235:33:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "48288:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48296:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48284:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48284:15:43"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "48301:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48277:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48277:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48277:32:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "48318:40:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48343:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48354:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48339:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48339:18:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "48333:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48333:25:43"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "48322:7:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "48391:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "48367:23:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48367:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48367:32:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "48419:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48427:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48415:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48415:15:43"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "48432:7:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48408:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48408:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48408:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "48449:16:43",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "48459:6:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "48449:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "47643:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "47654:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "47666:6:43",
                            "type": ""
                          }
                        ],
                        "src": "47568:903:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "48650:174:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "48667:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48678:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48660:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48660:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48660:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48701:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48712:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48697:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48697:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48717:2:43",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48690:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48690:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48690:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "48740:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "48751:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "48736:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "48736:18:43"
                                  },
                                  {
                                    "hexValue": "5265636569766572206973207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "48756:26:43",
                                    "type": "",
                                    "value": "Receiver is zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "48729:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48729:54:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "48729:54:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "48792:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "48804:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "48815:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "48800:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "48800:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "48792:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "48627:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "48641:4:43",
                            "type": ""
                          }
                        ],
                        "src": "48476:348:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "49003:171:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49020:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49031:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49013:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49013:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49013:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49054:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49065:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49050:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49050:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49070:2:43",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49043:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49043:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49043:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49093:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49104:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49089:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49089:18:43"
                                  },
                                  {
                                    "hexValue": "4e6567617469766520436173682042616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "49109:23:43",
                                    "type": "",
                                    "value": "Negative Cash Balance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49082:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49082:51:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49082:51:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "49142:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49154:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49165:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "49150:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49150:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "49142:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "48980:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "48994:4:43",
                            "type": ""
                          }
                        ],
                        "src": "48829:345:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "49410:330:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "49420:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49438:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49443:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "49434:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49434:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49447:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "49430:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49430:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "49424:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49465:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "49480:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "49488:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "49476:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49476:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49458:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49458:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49458:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49512:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49523:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49508:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49508:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "49532:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "49540:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "49528:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49528:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49501:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49501:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49501:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49564:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49575:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49560:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49560:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "49580:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49553:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49553:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49553:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49607:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49618:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49603:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49603:18:43"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "49623:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49596:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49596:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49596:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49650:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49661:3:43",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49646:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49646:19:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49667:3:43",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49639:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49639:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49639:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "49680:54:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "49706:6:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "49718:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49729:3:43",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "49714:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49714:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "49688:17:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49688:46:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "49680:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49347:9:43",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "49358:6:43",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "49366:6:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "49374:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "49382:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "49390:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "49401:4:43",
                            "type": ""
                          }
                        ],
                        "src": "49179:561:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "49902:218:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "49912:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49924:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49935:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "49920:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49920:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "49912:4:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "49947:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49965:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "49970:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "49961:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "49961:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "49974:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "49957:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49957:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "49951:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "49992:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "50007:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50015:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50003:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50003:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "49985:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "49985:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "49985:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50039:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50050:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50035:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50035:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50059:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50067:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50055:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50055:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50028:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50028:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50028:43:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50091:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50102:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50087:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50087:18:43"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "50107:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50080:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50080:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50080:34:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49855:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "49866:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "49874:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "49882:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "49893:4:43",
                            "type": ""
                          }
                        ],
                        "src": "49745:375:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "50299:163:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50316:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50327:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50309:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50309:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50309:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50350:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50361:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50346:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50346:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50366:2:43",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50339:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50339:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50339:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50389:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50400:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50385:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50385:18:43"
                                  },
                                  {
                                    "hexValue": "496e76616c696420696e646578",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "50405:15:43",
                                    "type": "",
                                    "value": "Invalid index"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50378:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50378:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50378:43:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "50430:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50442:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50453:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "50438:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50438:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "50430:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50276:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "50290:4:43",
                            "type": ""
                          }
                        ],
                        "src": "50125:337:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "50624:218:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "50634:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50646:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50657:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "50642:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50642:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "50634:4:43"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "50669:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50687:3:43",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50692:1:43",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "50683:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50683:11:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50696:1:43",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "50679:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50679:19:43"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "50673:2:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "50714:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "50729:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50737:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50725:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50725:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50707:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50707:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50707:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50761:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50772:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50757:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50757:18:43"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "50777:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50750:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50750:34:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50750:34:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50804:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "50815:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "50800:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50800:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "50824:6:43"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "50832:2:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "50820:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50820:15:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "50793:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50793:43:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "50793:43:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32_t_address__to_t_address_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50577:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "50588:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "50596:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "50604:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "50615:4:43",
                            "type": ""
                          }
                        ],
                        "src": "50467:375:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "50925:167:43",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "50971:16:43",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "50980:1:43",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "50983:1:43",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "50973:6:43"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "50973:12:43"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "50973:12:43"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "50946:7:43"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "50955:9:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "50942:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "50942:23:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "50967:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "50938:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "50938:32:43"
                              },
                              "nodeType": "YulIf",
                              "src": "50935:52:43"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "50996:29:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51015:9:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "51009:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51009:16:43"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "51000:5:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "51056:5:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "51034:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51034:28:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51034:28:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "51071:15:43",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "51081:5:43"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "51071:6:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50891:9:43",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "50902:7:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "50914:6:43",
                            "type": ""
                          }
                        ],
                        "src": "50847:245:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "51271:232:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51288:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51299:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51281:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51281:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51281:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51322:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51333:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51318:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51318:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51338:2:43",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51311:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51311:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51311:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51361:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51372:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51357:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51357:18:43"
                                  },
                                  {
                                    "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51377:34:43",
                                    "type": "",
                                    "value": "SafeERC20: ERC20 operation did n"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51350:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51350:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51350:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51432:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51443:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51428:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51428:18:43"
                                  },
                                  {
                                    "hexValue": "6f742073756363656564",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51448:12:43",
                                    "type": "",
                                    "value": "ot succeed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51421:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51421:40:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51421:40:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "51470:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51482:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51493:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "51478:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51478:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "51470:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "51248:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "51262:4:43",
                            "type": ""
                          }
                        ],
                        "src": "51097:406:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "51682:224:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51699:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51710:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51692:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51692:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51692:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51733:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51744:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51729:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51729:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51749:2:43",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51722:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51722:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51722:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51772:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51783:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51768:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51768:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206275726e2066726f6d20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51788:34:43",
                                    "type": "",
                                    "value": "ERC777: burn from the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51761:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51761:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51761:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "51843:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "51854:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "51839:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "51839:18:43"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "51859:4:43",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "51832:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51832:32:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "51832:32:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "51873:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "51885:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "51896:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "51881:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "51881:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "51873:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "51659:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "51673:4:43",
                            "type": ""
                          }
                        ],
                        "src": "51508:398:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "52085:225:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52102:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52113:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52095:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52095:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52095:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52136:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52147:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52132:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52132:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52152:2:43",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52125:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52125:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52125:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52175:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52186:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52171:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52171:18:43"
                                  },
                                  {
                                    "hexValue": "4552433737373a206275726e20616d6f756e7420657863656564732062616c61",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "52191:34:43",
                                    "type": "",
                                    "value": "ERC777: burn amount exceeds bala"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52164:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52164:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52164:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52246:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52257:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52242:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52242:18:43"
                                  },
                                  {
                                    "hexValue": "6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "52262:5:43",
                                    "type": "",
                                    "value": "nce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52235:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52235:33:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52235:33:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "52277:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52289:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52300:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "52285:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52285:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "52277:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "52062:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "52076:4:43",
                            "type": ""
                          }
                        ],
                        "src": "51911:399:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "52462:222:43",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "52472:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52484:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52495:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "52480:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52480:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "52472:4:43"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52514:9:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "52529:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52537:6:43",
                                        "type": "",
                                        "value": "0xffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "52525:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52525:19:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52507:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52507:38:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52507:38:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52565:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52576:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52561:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52561:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "52585:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52593:24:43",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "52581:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52581:37:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52554:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52554:65:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52554:65:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52639:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52650:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52635:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52635:18:43"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "52669:6:43"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "52662:6:43"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "52662:14:43"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "52655:6:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52655:22:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52628:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52628:50:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52628:50:43"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint16_t_uint88_t_bool__to_t_uint16_t_uint88_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "52415:9:43",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "52426:6:43",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "52434:6:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "52442:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "52453:4:43",
                            "type": ""
                          }
                        ],
                        "src": "52315:369:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "52863:228:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "52880:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52891:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52873:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52873:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52873:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52914:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52925:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52910:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52910:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "52930:2:43",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52903:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52903:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52903:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "52953:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "52964:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "52949:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "52949:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "52969:34:43",
                                    "type": "",
                                    "value": "Address: insufficient balance fo"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "52942:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "52942:62:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "52942:62:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "53024:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53035:2:43",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53020:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53020:18:43"
                                  },
                                  {
                                    "hexValue": "722063616c6c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "53040:8:43",
                                    "type": "",
                                    "value": "r call"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53013:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53013:36:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53013:36:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "53058:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "53070:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53081:3:43",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "53066:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53066:19:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "53058:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "52840:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "52854:4:43",
                            "type": ""
                          }
                        ],
                        "src": "52689:402:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "53270:179:43",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "53287:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53298:2:43",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53280:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53280:21:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53280:21:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "53321:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53332:2:43",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53317:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53317:18:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53337:2:43",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53310:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53310:30:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53310:30:43"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "53360:9:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53371:2:43",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53356:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53356:18:43"
                                  },
                                  {
                                    "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "53376:31:43",
                                    "type": "",
                                    "value": "Address: call to non-contract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "53349:6:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53349:59:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53349:59:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "53417:26:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "53429:9:43"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "53440:2:43",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "53425:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53425:18:43"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "53417:4:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "53247:9:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "53261:4:43",
                            "type": ""
                          }
                        ],
                        "src": "53096:353:43"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "53591:137:43",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "53601:27:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "53621:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "53615:5:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53615:13:43"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "53605:6:43",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "53663:6:43"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "53671:4:43",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "53659:3:43"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "53659:17:43"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "53678:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "53683:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "53637:21:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53637:53:43"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "53637:53:43"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "53699:23:43",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "53710:3:43"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "53715:6:43"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "53706:3:43"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "53706:16:43"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "53699:3:43"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "53567:3:43",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "53572:6:43",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "53583:3:43",
                            "type": ""
                          }
                        ],
                        "src": "53454:274:43"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function validator_revert_uint88(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_uint32(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint88t_addresst_uint32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_uint88(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_uint32(value_2)\n        value3 := value_2\n    }\n    function validator_revert_uint16(value)\n    {\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function validator_revert_uint40(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint16t_uint40(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint16(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_uint40(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_contract$_INotionalV2_$7474__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_uint32(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint16_t_uint40__to_t_uint16_t_uint40__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2763_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_7709() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x0160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_7716() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xc0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_IWETH9_$7263__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_decode_tuple_t_uint256t_struct$_RedeemOpts_$7490_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        if slt(add(_1, not(31)), 0x80) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        mstore(memPtr, value)\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := calldataload(add(headStart, 0x80))\n        validator_revert_uint32(value_3)\n        mstore(add(memPtr, 96), value_3)\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint40__to_t_uint40__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2763_t_int256__to_t_address_t_int256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value4 := add(_2, 32)\n        value5 := length\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2763_t_int256_t_enum$_TokenType_$4834__to_t_address_t_int256_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        if iszero(lt(value2, 5)) { panic_error_0x21() }\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_uint16_t_uint40_t_int256_t_uint256_t_bool__to_t_uint16_t_uint256_t_int256_t_uint256_t_bool__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n    }\n    function abi_decode_tuple_t_int256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_int256(x, y) -> product\n    {\n        let _1 := sub(shl(255, 1), 1)\n        let _2 := sgt(y, 0)\n        let _3 := sgt(x, 0)\n        if and(and(_3, _2), gt(x, div(_1, y))) { panic_error_0x11() }\n        let _4 := shl(255, 1)\n        let _5 := slt(y, 0)\n        if and(and(_3, _5), slt(y, sdiv(_4, x))) { panic_error_0x11() }\n        let _6 := slt(x, 0)\n        if and(and(_6, _2), slt(x, sdiv(_4, y))) { panic_error_0x11() }\n        if and(and(_6, _5), slt(x, sdiv(_1, y))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_int256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        if and(eq(x, shl(255, 1)), eq(y, not(0))) { panic_error_0x11() }\n        r := sdiv(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffff))\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_decode_uint8_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint8t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := abi_decode_uint8_fromMemory(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_uint16_t_uint256_t_uint40_t_rational_0_by_1_t_uint256_t_bool__to_t_uint16_t_uint256_t_uint256_t_uint32_t_uint256_t_bool__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffff))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), iszero(iszero(value5)))\n    }\n    function abi_decode_tuple_t_uint88t_uint8t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint88(value)\n        value0 := value\n        value1 := abi_decode_uint8_fromMemory(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function array_allocation_size_array_uint8_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint8_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, abi_decode_uint8_fromMemory(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_struct$_CashGroupSettings_$4929_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x0160) { revert(0, 0) }\n        let value := allocate_memory_7709()\n        mstore(value, abi_decode_uint8_fromMemory(_2))\n        mstore(add(value, 32), abi_decode_uint8_fromMemory(add(_2, 32)))\n        mstore(add(value, 64), abi_decode_uint8_fromMemory(add(_2, 64)))\n        mstore(add(value, 96), abi_decode_uint8_fromMemory(add(_2, 96)))\n        mstore(add(value, 128), abi_decode_uint8_fromMemory(add(_2, 128)))\n        mstore(add(value, 160), abi_decode_uint8_fromMemory(add(_2, 160)))\n        mstore(add(value, 192), abi_decode_uint8_fromMemory(add(_2, 192)))\n        mstore(add(value, 224), abi_decode_uint8_fromMemory(add(_2, 224)))\n        let _3 := 256\n        mstore(add(value, _3), abi_decode_uint8_fromMemory(add(_2, _3)))\n        let _4 := 288\n        let offset_1 := mload(add(_2, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, _4), abi_decode_array_uint8_dyn_fromMemory(add(_2, offset_1), dataEnd))\n        let _5 := 320\n        let offset_2 := mload(add(_2, _5))\n        if gt(offset_2, _1) { revert(0, 0) }\n        mstore(add(value, _5), abi_decode_array_uint8_dyn_fromMemory(add(_2, offset_2), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid currency\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid maturity\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_encode_tuple_packed_t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b_t_string_memory_ptr_t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"Wrapped f\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 9), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 9), \" @ \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 12), length_1)\n        end := add(add(_1, length_1), 12)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476_t_string_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"wf\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 2), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 2), \":\")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 3), length_1)\n        end := add(add(_1, length_1), 3)\n    }\n    function abi_encode_tuple_t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC777: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC777: transfer from the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ERC777: caller is not an operato\")\n        mstore(add(headStart, 96), \"r for holder\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Max Deposit\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC777: authorizing self as oper\")\n        mstore(add(headStart, 96), \"ator\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"Matured\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr__to_t_struct$_RedeemOpts_$7490_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, iszero(iszero(mload(value0))))\n        mstore(add(headStart, 0x20), iszero(iszero(mload(add(value0, 0x20)))))\n        mstore(add(headStart, 0x40), and(mload(add(value0, 0x40)), sub(shl(160, 1), 1)))\n        mstore(add(headStart, 0x60), and(mload(add(value0, 0x60)), 0xffffffff))\n    }\n    function abi_decode_struct_Token_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        let value_1 := mload(headStart)\n        validator_revert_address(value_1)\n        mstore(memPtr, value_1)\n        let value_2 := mload(add(headStart, 32))\n        validator_revert_bool(value_2)\n        mstore(add(memPtr, 32), value_2)\n        mstore(add(memPtr, 64), mload(add(headStart, 64)))\n        let value_3 := mload(add(headStart, 96))\n        if iszero(lt(value_3, 5)) { revert(0, 0) }\n        mstore(add(memPtr, 96), value_3)\n        mstore(add(memPtr, 128), mload(add(headStart, 128)))\n    }\n    function abi_decode_tuple_t_struct$_Token_$4890_memory_ptrt_struct$_Token_$4890_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 320) { revert(0, 0) }\n        value0 := abi_decode_struct_Token_fromMemory(headStart, dataEnd)\n        value1 := abi_decode_struct_Token_fromMemory(add(headStart, 160), dataEnd)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"Invalid\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_struct$_AccountContext_$4940_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_uint40(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, shl(248, 255)))) { revert(0, 0) }\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), abi_decode_uint8_fromMemory(add(headStart, 64)))\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_uint16(value_2)\n        mstore(add(memPtr, 96), value_2)\n        let value_3 := mload(add(headStart, 128))\n        if iszero(eq(value_3, and(value_3, not(0xffffffffffffffffffffffffffff)))) { revert(0, 0) }\n        mstore(add(memPtr, 128), value_3)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let dst := allocate_memory(array_allocation_size_array_uint8_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _1)\n        let _4 := 0xc0\n        let srcEnd := add(add(_2, mul(_3, _4)), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _1)\n        for { } lt(src, srcEnd) { src := add(src, _4) }\n        {\n            if slt(sub(dataEnd, src), _4)\n            {\n                let _5 := 0\n                revert(_5, _5)\n            }\n            let value := allocate_memory_7716()\n            mstore(value, mload(src))\n            mstore(add(value, _1), mload(add(src, _1)))\n            let _6 := 64\n            mstore(add(value, _6), mload(add(src, _6)))\n            let _7 := 96\n            mstore(add(value, _7), mload(add(src, _7)))\n            let _8 := 128\n            mstore(add(value, _8), mload(add(src, _8)))\n            let _9 := 160\n            let value_1 := mload(add(src, _9))\n            if iszero(lt(value_1, 3))\n            {\n                let _10 := 0\n                revert(_10, _10)\n            }\n            mstore(add(value, _9), value_1)\n            mstore(dst, value)\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC777: revoking self as operato\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint16_t_address__to_t_uint16_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_int256t_int256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint16_t_int256_t_bool__to_t_uint16_t_int256_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Must Settle\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC777: approve from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC777: approve to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"fCash matured\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_array_bytes32_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let _1 := 64\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        let _2 := 32\n        mstore(add(headStart, _2), _1)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        let _3 := 96\n        pos := add(headStart, _3)\n        let tail_2 := add(add(headStart, shl(5, length)), _3)\n        let srcPtr := add(value1, _2)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(95)))\n            let _4 := mload(srcPtr)\n            let _5 := 0xe0\n            let _6 := mload(_4)\n            if iszero(lt(_6, 7)) { panic_error_0x21() }\n            mstore(tail_2, _6)\n            mstore(add(tail_2, _2), and(mload(add(_4, _2)), 0xffff))\n            mstore(add(tail_2, _1), mload(add(_4, _1)))\n            mstore(add(tail_2, _3), mload(add(_4, _3)))\n            let _7 := 0x80\n            let memberValue0 := mload(add(_4, _7))\n            abi_encode_bool(memberValue0, add(tail_2, _7))\n            let _8 := 0xa0\n            let memberValue0_1 := mload(add(_4, _8))\n            abi_encode_bool(memberValue0_1, add(tail_2, _8))\n            let _9 := 0xc0\n            let memberValue0_2 := mload(add(_4, _9))\n            mstore(add(tail_2, _9), _5)\n            tail_2 := abi_encode_array_bytes32_dyn(memberValue0_2, add(tail_2, _5))\n            srcPtr := add(srcPtr, _2)\n            pos := add(pos, _2)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__to_t_address_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let _1 := 64\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        let _2 := 32\n        mstore(add(headStart, _2), _1)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        let _3 := 96\n        pos := add(headStart, _3)\n        let tail_2 := add(add(headStart, shl(5, length)), _3)\n        let srcPtr := add(value1, _2)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(95)))\n            let _4 := mload(srcPtr)\n            mstore(tail_2, and(mload(_4), 0xffff))\n            mstore(add(tail_2, _2), iszero(iszero(mload(add(_4, _2)))))\n            let memberValue0 := mload(add(_4, _1))\n            mstore(add(tail_2, _1), _3)\n            tail_2 := abi_encode_array_bytes32_dyn(memberValue0, add(tail_2, _3))\n            srcPtr := add(srcPtr, _2)\n            pos := add(pos, _2)\n        }\n        tail := tail_2\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 54)\n        mstore(add(headStart, 64), \"SafeERC20: approve from non-zero\")\n        mstore(add(headStart, 96), \" to non-zero allowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 192)\n        let tail_1 := abi_encode_string(value4, add(headStart, 192))\n        mstore(add(headStart, 160), sub(tail_1, headStart))\n        tail := abi_encode_string(value5, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"ERC777: insufficient allowance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ERC777: transfer amount exceeds \")\n        mstore(add(headStart, 96), \"balance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 96)\n        let tail_1 := abi_encode_string(value1, add(headStart, 96))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        tail := abi_encode_string(value2, tail_1)\n    }\n    function abi_encode_tuple_t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 77)\n        mstore(add(headStart, 64), \"ERC777: token recipient contract\")\n        mstore(add(headStart, 96), \" has no implementer for ERC777To\")\n        mstore(add(headStart, 128), \"kensRecipient\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC777: send from the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC777: send to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"CG: no markets listed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"CG: market index bound\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"CG: no market found\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"ERC777: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_struct$_RedeemOpts_$7490_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 128)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        mstore(add(memPtr, 32), value_1)\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 64), value_2)\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_uint32(value_3)\n        mstore(add(memPtr, 96), value_3)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Receiver is zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"Negative Cash Balance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_string(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Invalid index\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_address__to_t_address_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC777: burn from the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC777: burn amount exceeds bala\")\n        mstore(add(headStart, 96), \"nce\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint16_t_uint88_t_bool__to_t_uint16_t_uint88_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffff))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}",
                  "id": 43,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "5135": [
                  {
                    "length": 32,
                    "start": 988
                  },
                  {
                    "length": 32,
                    "start": 2031
                  },
                  {
                    "length": 32,
                    "start": 2655
                  },
                  {
                    "length": 32,
                    "start": 2915
                  },
                  {
                    "length": 32,
                    "start": 3266
                  },
                  {
                    "length": 32,
                    "start": 3873
                  },
                  {
                    "length": 32,
                    "start": 3974
                  },
                  {
                    "length": 32,
                    "start": 4653
                  },
                  {
                    "length": 32,
                    "start": 6566
                  },
                  {
                    "length": 32,
                    "start": 7089
                  },
                  {
                    "length": 32,
                    "start": 7453
                  },
                  {
                    "length": 32,
                    "start": 7587
                  },
                  {
                    "length": 32,
                    "start": 7737
                  },
                  {
                    "length": 32,
                    "start": 8201
                  },
                  {
                    "length": 32,
                    "start": 8816
                  },
                  {
                    "length": 32,
                    "start": 8978
                  },
                  {
                    "length": 32,
                    "start": 9903
                  },
                  {
                    "length": 32,
                    "start": 10112
                  },
                  {
                    "length": 32,
                    "start": 13583
                  },
                  {
                    "length": 32,
                    "start": 13738
                  },
                  {
                    "length": 32,
                    "start": 13992
                  },
                  {
                    "length": 32,
                    "start": 17752
                  },
                  {
                    "length": 32,
                    "start": 18083
                  }
                ],
                "5138": [
                  {
                    "length": 32,
                    "start": 1462
                  },
                  {
                    "length": 32,
                    "start": 4389
                  },
                  {
                    "length": 32,
                    "start": 9708
                  },
                  {
                    "length": 32,
                    "start": 9770
                  },
                  {
                    "length": 32,
                    "start": 15169
                  },
                  {
                    "length": 32,
                    "start": 15295
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061030c5760003560e01c8063959b8c3f1161019d578063cf387fed116100e9578063ee719bc8116100a2578063f8eef10f1161007c578063f8eef10f14610763578063fad8b32a1461077a578063fc673c4f1461078d578063fe9d9303146107a057600080fd5b8063ee719bc8146106fd578063ef8b30f714610724578063f23a6e611461073757600080fd5b8063cf387fed14610652578063d84878b81461066d578063d905777e14610680578063d95b637114610693578063dd62ed3e146106a6578063e16695b5146106df57600080fd5b8063b3d7f6b911610156578063c63d75b611610130578063c63d75b614610611578063c6e6f59214610624578063cb803ceb14610637578063ce96cb771461063f57600080fd5b8063b3d7f6b9146105d8578063b460af94146105eb578063ba087652146105fe57600080fd5b8063959b8c3f1461056857806395d89b411461057b5780639bd9bbc614610583578063a109329514610596578063a9059cbb1461059e578063ad5c4648146105b157600080fd5b8063313ce5671161025c57806351489551116102155780636e553f65116101ef5780636e553f651461050657806370a0823114610519578063745d08d91461054257806394bf804d1461055557600080fd5b806351489551146104ba578063556f0dc7146104ec57806362ad1b83146104f357600080fd5b8063313ce5671461043c57806338d52e0f146104515780633d3192cb14610459578063402d267d1461046c57806348d8f98d1461047f5780634cdad506146104a757600080fd5b80630a28a477116102c957806318160ddd116102a357806318160ddd146103cf57806319b53d35146103d757806323b872dd1461041657806329cf14051461042957600080fd5b80630a28a477146103945780630db8481c146103a7578063152b838c146103bc57600080fd5b806301e1d114146103115780630558d5001461032c57806306e485381461033457806306fdde031461034957806307a2d13a1461035e578063095ea7b314610371575b600080fd5b6103196107b3565b6040519081526020015b60405180910390f35b606554610319565b61033c6108e0565b6040516103239190614b90565b610351610942565b6040516103239190614c35565b61031961036c366004614c48565b6109cb565b61038461037f366004614c79565b610adc565b6040519015158152602001610323565b6103196103a2366004614c48565b610af4565b6103ba6103b5366004614ccc565b610be9565b005b6103ba6103ca366004614d42565b610bfd565b603454610319565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610323565b610384610424366004614d7b565b610fc9565b6103ba610437366004614ccc565b6110f7565b60085b60405160ff9091168152602001610323565b6103fe611105565b6103ba610467366004614dbc565b61114c565b61031961047a366004614dfe565b61118b565b6104876111a9565b6040805161ffff909316835264ffffffffff909116602083015201610323565b6103196104b5366004614c48565b6111cb565b6104cd6104c8366004614e29565b6112ac565b604080516001600160a01b039093168352901515602083015201610323565b6001610319565b6103ba610501366004614f54565b6112e4565b610319610514366004614fe6565b611320565b610319610527366004614dfe565b6001600160a01b031660009081526033602052604090205490565b6103ba610550366004614dbc565b6113da565b610319610563366004614fe6565b611419565b6103ba610576366004614dfe565b611477565b610351611595565b6103ba61059136600461500b565b6115a4565b6103846115c2565b6103846105ac366004614c79565b6115db565b6103fe7f000000000000000000000000000000000000000000000000000000000000000081565b6103196105e6366004614c48565b61168e565b6103196105f9366004615063565b6116d8565b61031961060c366004615063565b61175f565b61031961061f366004614dfe565b6118ee565b610319610632366004614c48565b61191b565b61043f611a25565b61031961064d366004614dfe565b611a5d565b61065a611a7f565b60405161ffff9091168152602001610323565b6103ba61067b36600461509a565b611a9e565b61031961068e366004614dfe565b611acc565b6103846106a136600461513e565b611aea565b6103196106b436600461513e565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b6106e7611b8b565b60405164ffffffffff9091168152602001610323565b610705611ba9565b604080516001600160a01b039093168352602083019190915201610323565b610319610732366004614c48565b611c91565b61074a61074536600461516c565b611cdb565b6040516001600160e01b03199091168152602001610323565b61076b612001565b6040516103239392919061522b565b6103ba610788366004614dfe565b6120bc565b6103ba61079b366004615260565b6121d8565b6103ba6107ae3660046152df565b61220a565b60006107bd6115c2565b156107cf576107ca612238565b905090565b60006107d9611ba9565b9150506000806107e76111a9565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c52c43e1848461082760345490565b6040516001600160e01b031960e086901b16815261ffff909316600484015264ffffffffff909116602483015260448201524260648201526000608482015260a401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190615325565b905060006305f5e1006108bd8684615354565b6108c791906153ef565b905060008112156108d757600080fd5b95945050505050565b6060603780548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161091a575b5050505050905090565b6060603580546109519061541d565b80601f016020809104026020016040519081016040528092919081815260200182805461097d9061541d565b80156109385780601f1061099f57610100808354040283529160200191610938565b820191906000526020600020905b8154815290600101906020018083116109ad57509395945050505050565b60006109d56115c2565b15610a0a5760006109e4612238565b90506109ef60345490565b6109f98285615452565b610a039190615471565b9392505050565b600080610a156111a9565b60405163aaae47b560e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482018190524260848301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aaae47b59060a401608060405180830381865afa158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190615496565b5091979650505050505050565b919050565b600033610aea8185856123bd565b5060019392505050565b6000610afe6115c2565b15610b1257610b0c8261191b565b92915050565b600080610b1d6111a9565b60405163bac9e8b160e01b815261ffff831660048201526024810187905264ffffffffff8216604482015260006064820152426084820152600160a482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bac9e8b19060c401606060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd691906154d3565b50506001600160581b0316949350505050565b610bf78484848460006124e4565b50505050565b600054610100900460ff16610c185760005460ff1615610c1c565b303b155b610c845760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff16158015610ca6576000805461ffff19166101011790555b60405163d4ccb0ed60e01b815261ffff841660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d4ccb0ed90602401600060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d3991908101906155a1565b805190915060ff16610d805760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642063757272656e637960801b6044820152606401610c7b565b8051610d979060ff1664ffffffffff85164261283c565b610dd65760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964206d6174757269747960801b6044820152606401610c7b565b610ded61ffff851664ffffffffff8516600161288c565b6065556000610dfa611ba9565b5090506000610e07612001565b50909150600090506001600160a01b03831615610e8957826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8491908101906156d2565b610ea6565b6040518060400160405280600381526020016208aa8960eb1b8152505b90506000610eba8764ffffffffff166128e7565b9050610f128282604051602001610ed292919061573f565b6040516020818303038152906040528383604051602001610ef4929190615792565b60408051601f198184030181526000835260208301909152906129ec565b610f486001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b836001600160a01b0316836001600160a01b031614158015610f7257506001600160a01b03841615155b15610fad57610fad6001600160a01b0385167f0000000000000000000000000000000000000000000000000000000000000000600019612a1e565b50505050508015610fc4576000805461ff00191690555b505050565b60006001600160a01b038316610ff15760405162461bcd60e51b8152600401610c7b906157dc565b6001600160a01b0384166110565760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610c7b565b6000339050611087818686866040518060200160405280600081525060405180602001604052806000815250612b66565b611092858285612c8e565b6110be818686866040518060200160405280600081525060405180602001604052806000815250612d1a565b6110ec8186868660405180602001604052806000815250604051806020016040528060008152506000612e80565b506001949350505050565b610bf78484848460016124e4565b600080600061111460016112ac565b91509150806111235781611145565b7f00000000000000000000000000000000000000000000000000000000000000005b9250505090565b610fc4836040518060800160405280600015158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b60006111956115c2565b6111a157600019610b0c565b600092915050565b6000806111c1606554603081901c91600882901c9190565b5090939092509050565b60006111d56115c2565b156111e357610b0c826109cb565b6000806111ee6111a9565b60405163416a158760e01b815261ffff831660048201526024810187905264ffffffffff821660448201526000606482015242608482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063416a15879060a401608060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190615496565b50919695505050505050565b60008082156112c5576112bd611ba9565b5091506112d3565b6112cd612001565b50909250505b50916001600160a01b038316159150565b6112ee3386611aea565b61130a5760405162461bcd60e51b8152600401610c7b90615820565b61131985858585856001613045565b5050505050565b600061132b8261118b565b8311156113685760405162461bcd60e51b815260206004820152600b60248201526a13585e0811195c1bdcda5d60aa1b6044820152606401610c7b565b600061137384611c91565b905061138c8461138283613128565b85600060016124e4565b60408051858152602081018390526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a39392505050565b610fc4836040518060800160405280600115158152602001600015158152602001856001600160a01b031681526020018463ffffffff16815250611a9e565b6000806114258461168e565b90506114348161138286613128565b60408051828152602081018690526001600160a01b0385169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791016113cb565b336001600160a01b03821614156114dc5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561152d57336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916905561155c565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060603680546109519061541d565b610fc433848484604051806020016040528060008152506001613045565b6000426115cd611b8b565b64ffffffffff161115905090565b60006001600160a01b0383166116035760405162461bcd60e51b8152600401610c7b906157dc565b6000339050611634818286866040518060200160405280600081525060405180602001604052806000815250612b66565b611660818286866040518060200160405280600081525060405180602001604052806000815250612d1a565b610aea8182868660405180602001604052806000815250604051806020016040528060008152506000612e80565b60006116986115c2565b156116cf5760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c826109cb565b6000806116e485610af4565b9050336001600160a01b0384161461170157611701833383612c8e565b61170c818585613142565b60408051868152602081018390526001600160a01b03808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4949350505050565b60008061176a611105565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa1580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190615325565b9050336001600160a01b038416146117f3576117f3833387612c8e565b6117fe858585613142565b6000611808611105565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa158015611850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118749190615325565b90506000611882838361586c565b9050846001600160a01b0316866001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db848b6040516118dc929190918252602082015260400190565b60405180910390a49695505050505050565b60006118f86115c2565b611909576001600160581b0361190c565b60005b6001600160581b031692915050565b60006119256115c2565b1561194a576000611934612238565b90508061194060345490565b6109f99085615452565b6000806119556111a9565b604051631f0750c160e31b815261ffff831660048201526024810187905264ffffffffff82166044820152600060648201819052426084830152600160a48301529294509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f83a86089060c401606060405180830381865afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1191906154d3565b50506001600160581b031695945050505050565b6000806000611a446007611a37611b8b565b64ffffffffff16426131a7565b915091508015611a575760009250505090565b50919050565b6001600160a01b038116600090815260336020526040812054610b0c906109cb565b6000611a96606554603081901c91600882901c9190565b509092915050565b600081604051602001611ab19190615883565b6040516020818303038152906040529050610fc4838261220a565b6001600160a01b038116600090815260336020526040812054610b0c565b6000816001600160a01b0316836001600160a01b03161480611b5557506001600160a01b03831660009081526038602052604090205460ff168015611b5557506001600160a01b038083166000908152603a602090815260408083209387168352929052205460ff16155b80610a0357506001600160a01b0380831660009081526039602090815260408083209387168352929052205460ff169392505050565b6000611ba2606554603081901c91600882901c9190565b5092915050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e611be6611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061594f565b9092509050600482606001516004811115611c6757611c67615215565b1415611c7f5750805160409091015190939092509050565b80516040909101519094909350915050565b6000611c9b6115c2565b15611cd25760405162461bcd60e51b815260206004820152600760248201526613585d1d5c995960ca1b6044820152606401610c7b565b610b0c8261191b565b600060026066541415611d005760405162461bcd60e51b8152600401610c7b90615985565b60026066556000611d1060655490565b9050336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611d4957508086145b8015611d555750600085135b611d8b5760405162461bcd60e51b8152602060048201526007602482015266125b9d985b1a5960ca1b6044820152606401610c7b565b60405163b0de221760e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0de22179060240160a060405180830381865afa158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1691906159bc565b604051635a9b7fdb60e11b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b536ffb690602401600060405180830381865afa158015611e80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ea89190810190615a72565b60208301519091506001600160f81b031916158015611ec8575080516001145b8015611f37575082611f3582600081518110611ee657611ee6615b5b565b60200260200101516000015183600081518110611f0557611f05615b5b565b60200260200101516020015184600081518110611f2457611f24615b5b565b60200260200101516040015161288c565b145b611f4057600080fd5b6060808a6001600160a01b03168c6001600160a01b03161415611f9c5787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450611fd692505050565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b611fe48b8a848460006132f0565b505060016066555063f23a6e6160e01b9998505050505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ebad18e61203e611a7f565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240161014060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a2919061594f565b508051604082015160609092015190969195509350915050565b6001600160a01b03811633141561211f5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b6064820152608401610c7b565b6001600160a01b03811660009081526038602052604090205460ff161561217357336000908152603a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561219f565b3360009081526039602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6121e23385611aea565b6121fe5760405162461bcd60e51b8152600401610c7b90615820565b610bf784848484613439565b61222533838360405180602001604052806000815250613439565b5050565b6001600160a01b03163b151590565b600080612243611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122db9190615b71565b5050604051631baefc5d60e21b815261ffff8416600482015260248101829052600160448201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636ebbf17490606401602060405180830381865afa158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190615325565b905060008113610a035760405162461bcd60e51b815260206004820152600b60248201526a4d75737420536574746c6560a81b6044820152606401610c7b565b6001600160a01b0383166124215760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c7b565b6001600160a01b0382166124835760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c7b565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260665414156125075760405162461bcd60e51b8152600401610c7b90615985565b60026066556125146115c2565b156125515760405162461bcd60e51b815260206004820152600d60248201526c1990d85cda081b585d1d5c9959609a1b6044820152606401610c7b565b60008061255d836112ac565b915091506000816125d5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d09190615325565b6125d7565b475b90508115612734576126146001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b61375b565b604051632e1a7d4d60e01b8152600481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561267657600080fd5b505af115801561268a573d6000803e3d6000fd5b5050505060006126ab61269b611a7f565b6126a3611a25565b8b8b8a613793565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630276b64b8a30846040518463ffffffff1660e01b81526004016126fc929190615bda565b6000604051808303818588803b15801561271557600080fd5b505af1158015612729573d6000803e3d6000fd5b5050505050506127eb565b6127496001600160a01b03841633308b61375b565b6000612766612756611a7f565b61275e611a25565b8a8989613978565b604051630541f52760e41b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063541f5270906127b79030908590600401615caa565b600060405180830381600087803b1580156127d157600080fd5b505af11580156127e5573d6000803e3d6000fd5b50505050505b61282086886001600160581b0316604051806020016040528060008152506040518060200160405280600081525060006132f0565b61282c83338484613ab4565b5050600160665550505050505050565b60008061284883613c0c565b9050600061285586613c76565b61285f9083615d2e565b90508085111561287457600092505050610a03565b60006128808587613e4e565b98975050505050505050565b6000613fff84111561289d57600080fd5b64ffffffffff8311156128af57600080fd5b60088211156128bd57600080fd5b5067ffff000000000000603084901b1665ffffffffff00600884901b161760ff8216179392505050565b60608161290b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612935578061291f81615d46565b915061292e9050600a83615471565b915061290f565b6000816001600160401b0381111561294f5761294f614e46565b6040519080825280601f01601f191660200182016040528015612979576020820181803683370190505b5090505b84156129e45761298e60018361586c565b915061299b600a86615d61565b6129a6906030615d2e565b60f81b8183815181106129bb576129bb615b5b565b60200101906001600160f81b031916908160001a9053506129dd600a86615471565b945061297d565b949350505050565b600054610100900460ff16612a135760405162461bcd60e51b8152600401610c7b90615d75565b610fc4838383614039565b801580612a985750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190615325565b155b612b035760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610c7b565b6040516001600160a01b038316602482015260448101829052610fc490849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614223565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b9190615dc0565b90506001600160a01b03811615612c8557604051633ad5cbc160e11b81526001600160a01b038216906375ab978290612c52908a908a908a908a908a908a90600401615ddd565b600060405180830381600087803b158015612c6c57600080fd5b505af1158015612c80573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b038381166000908152603b60209081526040808320938616835292905220546000198114610bf75781811015612d0d5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610c7b565b610bf784848484036123bd565b6001600160a01b03851660009081526033602052604090205483811015612d935760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610c7b565b6001600160a01b03808716600090815260336020526040808220878503905591871681529081208054869290612dca908490615d2e565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051612e2293929190615e2a565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612e6f91815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190615dc0565b90506001600160a01b03811615612fa1576040516223de2960e01b81526001600160a01b038216906223de2990612f6a908b908b908b908b908b908b90600401615ddd565b600060405180830381600087803b158015612f8457600080fd5b505af1158015612f98573d6000803e3d6000fd5b5050505061303b565b811561303b576001600160a01b0386163b1561303b5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401610c7b565b5050505050505050565b6001600160a01b0386166130a65760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b6001600160a01b0385166130fc5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f20616464726573736044820152606401610c7b565b3361310b818888888888612b66565b613119818888888888612d1a565b612c8581888888888888612e80565b60006001600160581b0382111561313e57600080fd5b5090565b6040805160808101825260018152600060208083018290526001600160a01b03861683850152606083018290529251909261317e929101615883565b60408051601f1981840301815260208301909152600082529150610bf790839086908490613439565b600080600085116131f25760405162461bcd60e51b815260206004820152601560248201527410d1ce881b9bc81b585c9ad95d1cc81b1a5cdd1959605a1b6044820152606401610c7b565b600785111561323c5760405162461bcd60e51b815260206004820152601660248201527510d1ce881b585c9ad95d081a5b99195e08189bdd5b9960521b6044820152606401610c7b565b600061324784613c0c565b905060015b8681116132a957600061325e82613c76565b6132689084615d2e565b90508681141561328057509250600091506132e89050565b8681111561329657509250600191506132e89050565b50806132a181615d46565b91505061324c565b5060405162461bcd60e51b815260206004820152601360248201527210d1ce881b9bc81b585c9ad95d08199bdd5b99606a1b6044820152606401610c7b565b935093915050565b6001600160a01b0385166133465760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c7b565b6000339050846034600082825461335d9190615d2e565b90915550506001600160a01b0386166000908152603360205260408120805487929061338a908490615d2e565b909155506133a090508160008888888888612e80565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516133e793929190615e2a565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050505050565b6002606654141561345c5760405162461bcd60e51b8152600401610c7b90615985565b6002606655600061346c60345490565b90506000838060200190518101906134849190615e5f565b60408101519091506001600160a01b03166134e15760405162461bcd60e51b815260206004820152601860248201527f5265636569766572206973207a65726f206164647265737300000000000000006044820152606401610c7b565b6134ed868686866142f5565b6134f56115c2565b1561369c5760405163f667f89760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f667f89790602401600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b50505050600061357d611a7f565b60405163fc1b134560e01b815261ffff821660048201523060248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fc1b134590604401606060405180830381865afa1580156135f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136159190615b71565b50509050806000126136615760405162461bcd60e51b81526020600482015260156024820152744e6567617469766520436173682042616c616e636560581b6044820152606401610c7b565b60008461366e8984615452565b6136789190615471565b905061369383856040015161368c84613128565b875161449e565b5050505061374e565b806020015115613734577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f242432a3083604001516136e460655490565b89896040518663ffffffff1660e01b8152600401613706959493929190615ee3565b600060405180830381600087803b15801561372057600080fd5b505af1158015613693573d6000803e3d6000fd5b61374c816040015186836000015184606001516145da565b505b5050600160665550505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610bf79085906323b872dd60e01b90608401612b2f565b604080516001808252818301909252606091816020015b6137b2614a60565b8152602001906001900390816137aa5790505090506002816000815181106137dc576137dc615b5b565b60200260200101516000019060068111156137f9576137f9615215565b9081600681111561380c5761380c615215565b81525050858160008151811061382457613824615b5b565b60200260200101516020019061ffff16908161ffff1681525050838160008151811061385257613852615b5b565b6020026020010151604001818152505060018160008151811061387757613877615b5b565b602002602001015160800190151590811515815250506001816000815181106138a2576138a2615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106138e9576138e9615b5b565b602090810291909101015160c0015263ffffffff60781b607883901b16600160981b600160f01b03609885901b1660ff60f01b60f088901b1660f860005b60ff16901b17171760001b8160008151811061394557613945615b5b565b602002602001015160c0015160008151811061396357613963615b5b565b60200260200101818152505095945050505050565b604080516001808252818301909252606091816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161398f57905050905085816000815181106139d4576139d4615b5b565b60200260200101516000019061ffff16908161ffff16815250508181600081518110613a0257613a02615b5b565b602090810291909101810151911515910152604080516001808252818301909252908160200160208202803683370190505081600081518110613a4757613a47615b5b565b602090810291909101015160400152805160f086901b60ff60f01b16609886901b600160981b600160f01b031617607885901b63ffffffff60781b1617908290600090613a9657613a96615b5b565b60200260200101516040015160008151811061396357613963615b5b565b60008083613b29576040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b249190615325565b613b2b565b475b9050613b37838261586c565b91508315613bef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b9a57600080fd5b505af1158015613bae573d6000803e3d6000fd5b50613bea9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915087905084614725565b613c03565b613c036001600160a01b0387168684614725565b50949350505050565b6000613c1c620151806006615452565b613c27906005615452565b613c32906003615452565b821015613c3e57600080fd5b613c4c620151806006615452565b613c57906005615452565b613c62906003615452565b613c6c9083615d61565b610b0c908361586c565b60008160011415613ca557613c8f620151806006615452565b613c9a906005615452565b610b0c906003615452565b8160021415613cdd57613cbc620151806006615452565b613cc7906005615452565b613cd2906003615452565b610b0c906002615452565b8160031415613d1557613cf4620151806006615452565b613cff906005615452565b613d0a906003615452565b610b0c906004615452565b8160041415613d4d57613d2c620151806006615452565b613d37906005615452565b613d42906003615452565b613cd2906004615452565b8160051415613d9057613d64620151806006615452565b613d6f906005615452565b613d7a906003615452565b613d85906004615452565b610b0c906005615452565b8160061415613dd357613da7620151806006615452565b613db2906005615452565b613dbd906003615452565b613dc8906004615452565b610b0c90600a615452565b8160071415613e1657613dea620151806006615452565b613df5906005615452565b613e00906003615452565b613e0b906004615452565b610b0c906014615452565b60405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610c7b565b6000806000613e5c85614755565b9050613e6b6201518085615d61565b15613e7d576000809250925050614032565b838110613e91576000809250925050614032565b600062015180613ea1838761586c565b613eab9190615471565b9050605a8111613ec2579250600191506140329050565b6101688111613f3757600062015180613edc816006615452565b613ee69085615d61565b613ef09190615471565b613efb605a8461586c565b613f059190615d2e565b9050613f12600682615471565b613f1d90605a615d2e565b613f28600683615d61565b60001494509450505050614032565b6108708111613fa957600062015180613f51816006615452565b613f5c906005615452565b613f669085615d61565b613f709190615471565b613f7c6101688461586c565b613f869190615d2e565b9050613f93601e82615471565b613f9e906087615d2e565b613f28601e83615d61565b611de2811161402657600062015180613fc3816006615452565b613fce906005615452565b613fd9906003615452565b613fe39085615d61565b613fed9190615471565b613ff96108708461586c565b6140039190615d2e565b9050614010605a82615471565b61401b9060c3615d2e565b613f28605a83615d61565b61010060009350935050505b9250929050565b600054610100900460ff166140605760405162461bcd60e51b8152600401610c7b90615d75565b8251614073906035906020860190614aa6565b508151614087906036906020850190614aa6565b50805161409b906037906020840190614b26565b5060005b8151811015614104576001603860008484815181106140c0576140c0615b5b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806140fc81615d46565b91505061409f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b15801561417e57600080fd5b505af1158015614192573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561420f57600080fd5b505af1158015612c85573d6000803e3d6000fd5b6000614278826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166147749092919063ffffffff16565b805190915015610fc457808060200190518101906142969190615f1d565b610fc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c7b565b6001600160a01b0384166143565760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c7b565b3361436681866000878787612b66565b6001600160a01b038516600090815260336020526040902054848110156143db5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b6064820152608401610c7b565b6001600160a01b038616600090815260336020526040812086830390556034805487929061440a90849061586c565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161445893929190615e2a565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001613429565b60008060006144ac846112ac565b91509150600081614524576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156144fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451f9190615325565b614526565b475b604051625e665d60e31b815261ffff8a1660048201526001600160581b038816602482015286151560448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302f332e8906064016020604051808303816000875af11580156145a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145cd9190615325565b5061288083888484613ab4565b60008060006145e8856112ac565b91509150600081614660576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015614637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465b9190615325565b614662565b475b90506000614689614671611a7f565b614679611a25565b6146828b613128565b898b614783565b604051630276b64b60e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630276b64b906146da9030908590600401615bda565b600060405180830381600087803b1580156146f457600080fd5b505af1158015614708573d6000803e3d6000fd5b50505050614718848a8585613ab4565b9998505050505050505050565b6040516001600160a01b038316602482015260448101829052610fc490849063a9059cbb60e01b90606401612b2f565b60006201518082101561476757600080fd5b613c6c6201518083615d61565b60606129e484846000856148f6565b604080516001808252818301909252606091816020015b6147a2614a60565b81526020019060019003908161479a5790505090506000816000815181106147cc576147cc615b5b565b60200260200101516000019060068111156147e9576147e9615215565b908160068111156147fc576147fc615215565b81525050858160008151811061481457614814615b5b565b60200260200101516020019061ffff16908161ffff168152505060018160008151811061484357614843615b5b565b60200260200101516080019015159081151581525050818160008151811061486d5761486d615b5b565b602090810291909101015190151560a0909101526040805160018082528183019092529081602001602082028036833701905050816000815181106148b4576148b4615b5b565b602090810291909101015160c0015263ffffffff60781b607884901b16600160981b600160f01b03609886901b1660ff60f01b60f088901b1660f86001613927565b6060824710156149575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c7b565b6001600160a01b0385163b6149ae5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c7b565b600080866001600160a01b031685876040516149ca9190615f3a565b60006040518083038185875af1925050503d8060008114614a07576040519150601f19603f3d011682016040523d82523d6000602084013e614a0c565b606091505b5091509150614a1c828286614a27565b979650505050505050565b60608315614a36575081610a03565b825115614a465782518084602001fd5b8160405162461bcd60e51b8152600401610c7b9190614c35565b6040805160e081019091528060008152602001600061ffff1681526020016000815260200160008152602001600015158152602001600015158152602001606081525090565b828054614ab29061541d565b90600052602060002090601f016020900481019282614ad45760008555614b1a565b82601f10614aed57805160ff1916838001178555614b1a565b82800160010185558215614b1a579182015b82811115614b1a578251825591602001919060010190614aff565b5061313e929150614b7b565b828054828255906000526020600020908101928215614b1a579160200282015b82811115614b1a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614b46565b5b8082111561313e5760008155600101614b7c565b6020808252825182820181905260009190848201906040850190845b81811015614bd15783516001600160a01b031683529284019291840191600101614bac565b50909695505050505050565b60005b83811015614bf8578181015183820152602001614be0565b83811115610bf75750506000910152565b60008151808452614c21816020860160208601614bdd565b601f01601f19169290920160200192915050565b602081526000610a036020830184614c09565b600060208284031215614c5a57600080fd5b5035919050565b6001600160a01b0381168114614c7657600080fd5b50565b60008060408385031215614c8c57600080fd5b8235614c9781614c61565b946020939093013593505050565b6001600160581b0381168114614c7657600080fd5b63ffffffff81168114614c7657600080fd5b60008060008060808587031215614ce257600080fd5b843593506020850135614cf481614ca5565b92506040850135614d0481614c61565b91506060850135614d1481614cba565b939692955090935050565b61ffff81168114614c7657600080fd5b64ffffffffff81168114614c7657600080fd5b60008060408385031215614d5557600080fd5b8235614d6081614d1f565b91506020830135614d7081614d2f565b809150509250929050565b600080600060608486031215614d9057600080fd5b8335614d9b81614c61565b92506020840135614dab81614c61565b929592945050506040919091013590565b600080600060608486031215614dd157600080fd5b833592506020840135614de381614c61565b91506040840135614df381614cba565b809150509250925092565b600060208284031215614e1057600080fd5b8135610a0381614c61565b8015158114614c7657600080fd5b600060208284031215614e3b57600080fd5b8135610a0381614e1b565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e7f57614e7f614e46565b60405290565b60405160c081016001600160401b0381118282101715614e7f57614e7f614e46565b604051601f8201601f191681016001600160401b0381118282101715614ecf57614ecf614e46565b604052919050565b60006001600160401b03821115614ef057614ef0614e46565b50601f01601f191660200190565b600082601f830112614f0f57600080fd5b8135614f22614f1d82614ed7565b614ea7565b818152846020838601011115614f3757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614f6c57600080fd5b8535614f7781614c61565b94506020860135614f8781614c61565b93506040860135925060608601356001600160401b0380821115614faa57600080fd5b614fb689838a01614efe565b93506080880135915080821115614fcc57600080fd5b50614fd988828901614efe565b9150509295509295909350565b60008060408385031215614ff957600080fd5b823591506020830135614d7081614c61565b60008060006060848603121561502057600080fd5b833561502b81614c61565b92506020840135915060408401356001600160401b0381111561504d57600080fd5b61505986828701614efe565b9150509250925092565b60008060006060848603121561507857600080fd5b83359250602084013561508a81614c61565b91506040840135614df381614c61565b60008082840360a08112156150ae57600080fd5b833592506080601f19820112156150c457600080fd5b50604051608081018181106001600160401b03821117156150e7576150e7614e46565b60405260208401356150f881614e1b565b8152604084013561510881614e1b565b6020820152606084013561511b81614c61565b6040820152608084013561512e81614cba565b6060820152919491935090915050565b6000806040838503121561515157600080fd5b823561515c81614c61565b91506020830135614d7081614c61565b60008060008060008060a0878903121561518557600080fd5b863561519081614c61565b955060208701356151a081614c61565b9450604087013593506060870135925060808701356001600160401b03808211156151ca57600080fd5b818901915089601f8301126151de57600080fd5b8135818111156151ed57600080fd5b8a60208285010111156151ff57600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038416815260208101839052606081016005831061525257615252615215565b826040830152949350505050565b6000806000806080858703121561527657600080fd5b843561528181614c61565b93506020850135925060408501356001600160401b03808211156152a457600080fd5b6152b088838901614efe565b935060608701359150808211156152c657600080fd5b506152d387828801614efe565b91505092959194509250565b600080604083850312156152f257600080fd5b8235915060208301356001600160401b0381111561530f57600080fd5b61531b85828601614efe565b9150509250929050565b60006020828403121561533757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b038184138284138082168684048611161561537a5761537a61533e565b600160ff1b60008712828116878305891216156153995761539961533e565b600087129250878205871284841616156153b5576153b561533e565b878505871281841616156153cb576153cb61533e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b6000826153fe576153fe6153d9565b600160ff1b8214600019841416156154185761541861533e565b500590565b600181811c9082168061543157607f821691505b60208210811415611a5757634e487b7160e01b600052602260045260246000fd5b600081600019048311821515161561546c5761546c61533e565b500290565b600082615480576154806153d9565b500490565b805160ff81168114610ad757600080fd5b600080600080608085870312156154ac57600080fd5b84519350602085015192506154c360408601615485565b6060959095015193969295505050565b6000806000606084860312156154e857600080fd5b83516154f381614ca5565b925061550160208501615485565b9150604084015190509250925092565b60006001600160401b0382111561552a5761552a614e46565b5060051b60200190565b600082601f83011261554557600080fd5b81516020615555614f1d83615511565b82815260059290921b8401810191818101908684111561557457600080fd5b8286015b848110156155965761558981615485565b8352918301918301615578565b509695505050505050565b6000602082840312156155b357600080fd5b81516001600160401b03808211156155ca57600080fd5b9083019061016082860312156155df57600080fd5b6155e7614e5c565b6155f083615485565b81526155fe60208401615485565b602082015261560f60408401615485565b604082015261562060608401615485565b606082015261563160808401615485565b608082015261564260a08401615485565b60a082015261565360c08401615485565b60c082015261566460e08401615485565b60e0820152610100615677818501615485565b90820152610120838101518381111561568f57600080fd5b61569b88828701615534565b82840152505061014080840151838111156156b557600080fd5b6156c188828701615534565b918301919091525095945050505050565b6000602082840312156156e457600080fd5b81516001600160401b038111156156fa57600080fd5b8201601f8101841361570b57600080fd5b8051615719614f1d82614ed7565b81815285602083850101111561572e57600080fd5b6108d7826020830160208601614bdd565b682bb930b83832b2103360b91b815260008351615763816009850160208801614bdd565b6201020160ed1b600991840191820152835161578681600c840160208801614bdd565b01600c01949350505050565b613bb360f11b8152600083516157af816002850160208801614bdd565b601d60f91b60029184019182015283516157d0816003840160208801614bdd565b01600301949350505050565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b60008282101561587e5761587e61533e565b500390565b8151151581526020808301511515908201526040808301516001600160a01b03169082015260609182015163ffffffff169181019190915260800190565b600060a082840312156158d357600080fd5b60405160a081018181106001600160401b03821117156158f5576158f5614e46565b8060405250809150825161590881614c61565b8152602083015161591881614e1b565b60208201526040838101519082015260608301516005811061593957600080fd5b6060820152608092830151920191909152919050565b600080610140838503121561596357600080fd5b61596d84846158c1565b915061597c8460a085016158c1565b90509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060a082840312156159ce57600080fd5b60405160a081018181106001600160401b03821117156159f0576159f0614e46565b60405282516159fe81614d2f565b815260208301516001600160f81b031981168114615a1b57600080fd5b6020820152615a2c60408401615485565b60408201526060830151615a3f81614d1f565b606082015260808301516dffffffffffffffffffffffffffff1981168114615a6657600080fd5b60808201529392505050565b60006020808385031215615a8557600080fd5b82516001600160401b03811115615a9b57600080fd5b8301601f81018513615aac57600080fd5b8051615aba614f1d82615511565b81815260c09182028301840191848201919088841115615ad957600080fd5b938501935b83851015615b4f5780858a031215615af65760008081fd5b615afe614e85565b85518152868601518782015260408087015190820152606080870151908201526080808701519082015260a08087015160038110615b3c5760008081fd5b9082015283529384019391850191615ade565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215615b8657600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015615bcf57815187529582019590820190600101615bb3565b509495945050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57605f198a8403018552815160e0815160078110615c3857615c38615215565b85528188015161ffff1688860152898201518a860152888201518986015260808083015115159086015260a08083015115159086015260c091820151918501819052615c8681860183615b9f565b968801969450505090850190600101615c11565b50909a9950505050505050505050565b6001600160a01b03831681526040602080830182905283518383018190526000929160609182860190600581901b87018401888401875b83811015615c9a57898303605f190185528151805161ffff16845286810151151587850152880151888401889052615d1b88850182615b9f565b9587019593505090850190600101615ce1565b60008219821115615d4157615d4161533e565b500190565b6000600019821415615d5a57615d5a61533e565b5060010190565b600082615d7057615d706153d9565b500690565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215615dd257600080fd5b8151610a0381614c61565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090615e1890830185614c09565b82810360a08401526147188185614c09565b838152606060208201526000615e436060830185614c09565b8281036040840152615e558185614c09565b9695505050505050565b600060808284031215615e7157600080fd5b604051608081018181106001600160401b0382111715615e9357615e93614e46565b6040528251615ea181614e1b565b81526020830151615eb181614e1b565b60208201526040830151615ec481614c61565b60408201526060830151615ed781614cba565b60608201529392505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614a1c90830184614c09565b600060208284031215615f2f57600080fd5b8151610a0381614e1b565b60008251615f4c818460208701614bdd565b919091019291505056fea2646970667358221220a5a1b13f6334f51feacc420b761034eaa98f0a8ad53025e508eadf0058b2523664736f6c634300080b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x30C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x959B8C3F GT PUSH2 0x19D JUMPI DUP1 PUSH4 0xCF387FED GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0xEE719BC8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xF8EEF10F GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xF8EEF10F EQ PUSH2 0x763 JUMPI DUP1 PUSH4 0xFAD8B32A EQ PUSH2 0x77A JUMPI DUP1 PUSH4 0xFC673C4F EQ PUSH2 0x78D JUMPI DUP1 PUSH4 0xFE9D9303 EQ PUSH2 0x7A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xEE719BC8 EQ PUSH2 0x6FD JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x737 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF387FED EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xD84878B8 EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD95B6371 EQ PUSH2 0x693 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0xE16695B5 EQ PUSH2 0x6DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0xC63D75B6 GT PUSH2 0x130 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xCB803CEB EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x5D8 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5EB JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x959B8C3F EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x9BD9BBC6 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xA1093295 EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x25C JUMPI DUP1 PUSH4 0x51489551 GT PUSH2 0x215 JUMPI DUP1 PUSH4 0x6E553F65 GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x506 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x519 JUMPI DUP1 PUSH4 0x745D08D9 EQ PUSH2 0x542 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x51489551 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x62AD1B83 EQ PUSH2 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43C JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x3D3192CB EQ PUSH2 0x459 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x48D8F98D EQ PUSH2 0x47F JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x4A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3CF JUMPI DUP1 PUSH4 0x19B53D35 EQ PUSH2 0x3D7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x29CF1405 EQ PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 EQ PUSH2 0x394 JUMPI DUP1 PUSH4 0xDB8481C EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x152B838C EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x558D500 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0x6E48538 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x371 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x65 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x33C PUSH2 0x8E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4B90 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x942 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x9CB JUMP JUMPDEST PUSH2 0x384 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0xADC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0xAF4 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0xBE9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3BA PUSH2 0x3CA CALLDATASIZE PUSH1 0x4 PUSH2 0x4D42 JUMP JUMPDEST PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x424 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D7B JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x437 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCC JUMP JUMPDEST PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x8 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3FE PUSH2 0x1105 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x467 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x114C JUMP JUMPDEST PUSH2 0x319 PUSH2 0x47A CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x118B JUMP JUMPDEST PUSH2 0x487 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x11CB JUMP JUMPDEST PUSH2 0x4CD PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E29 JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x319 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x501 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F54 JUMP JUMPDEST PUSH2 0x12E4 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x514 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1320 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x527 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x550 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x563 CALLDATASIZE PUSH1 0x4 PUSH2 0x4FE6 JUMP JUMPDEST PUSH2 0x1419 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x576 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1477 JUMP JUMPDEST PUSH2 0x351 PUSH2 0x1595 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x500B JUMP JUMPDEST PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x5AC CALLDATASIZE PUSH1 0x4 PUSH2 0x4C79 JUMP JUMPDEST PUSH2 0x15DB JUMP JUMPDEST PUSH2 0x3FE PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x168E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x5F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x16D8 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x60C CALLDATASIZE PUSH1 0x4 PUSH2 0x5063 JUMP JUMPDEST PUSH2 0x175F JUMP JUMPDEST PUSH2 0x319 PUSH2 0x61F CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x18EE JUMP JUMPDEST PUSH2 0x319 PUSH2 0x632 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x191B JUMP JUMPDEST PUSH2 0x43F PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x64D CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1A5D JUMP JUMPDEST PUSH2 0x65A PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x67B CALLDATASIZE PUSH1 0x4 PUSH2 0x509A JUMP JUMPDEST PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x319 PUSH2 0x68E CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x1ACC JUMP JUMPDEST PUSH2 0x384 PUSH2 0x6A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x319 PUSH2 0x6B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x513E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x1B8B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x705 PUSH2 0x1BA9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x319 PUSH2 0x732 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C48 JUMP JUMPDEST PUSH2 0x1C91 JUMP JUMPDEST PUSH2 0x74A PUSH2 0x745 CALLDATASIZE PUSH1 0x4 PUSH2 0x516C JUMP JUMPDEST PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x76B PUSH2 0x2001 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x323 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x522B JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x788 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DFE JUMP JUMPDEST PUSH2 0x20BC JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x5260 JUMP JUMPDEST PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0x3BA PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x52DF JUMP JUMPDEST PUSH2 0x220A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7BD PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x7CF JUMPI PUSH2 0x7CA PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D9 PUSH2 0x1BA9 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0x7E7 PUSH2 0x11A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC52C43E1 DUP5 DUP5 PUSH2 0x827 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP4 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH5 0xFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8AA SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH4 0x5F5E100 PUSH2 0x8BD DUP7 DUP5 PUSH2 0x5354 JUMP JUMPDEST PUSH2 0x8C7 SWAP2 SWAP1 PUSH2 0x53EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SLT ISZERO PUSH2 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x37 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x938 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x91A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x35 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x97D SWAP1 PUSH2 0x541D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x938 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x99F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x938 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x9AD JUMPI POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 PUSH2 0x9E4 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP PUSH2 0x9EF PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 DUP3 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xA03 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA15 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xAAAE47B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xAAAE47B5 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xACA SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xAEA DUP2 DUP6 DUP6 PUSH2 0x23BD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFE PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0xB12 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB1D PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xBAC9E8B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xBAC9E8B1 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBD6 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x24E4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC18 JUMPI PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xC1C JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO JUMPDEST PUSH2 0xC84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x101 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD4CCB0ED PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xD4CCB0ED SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD39 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x55A1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C69642063757272656E6379 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST DUP1 MLOAD PUSH2 0xD97 SWAP1 PUSH1 0xFF AND PUSH5 0xFFFFFFFFFF DUP6 AND TIMESTAMP PUSH2 0x283C JUMP JUMPDEST PUSH2 0xDD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x496E76616C6964206D61747572697479 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xDED PUSH2 0xFFFF DUP6 AND PUSH5 0xFFFFFFFFFF DUP6 AND PUSH1 0x1 PUSH2 0x288C JUMP JUMPDEST PUSH1 0x65 SSTORE PUSH1 0x0 PUSH2 0xDFA PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0xE07 PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0xE89 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xE84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x56D2 JUMP JUMPDEST PUSH2 0xEA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x8AA89 PUSH1 0xEB SHL DUP2 MSTORE POP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xEBA DUP8 PUSH5 0xFFFFFFFFFF AND PUSH2 0x28E7 JUMP JUMPDEST SWAP1 POP PUSH2 0xF12 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xED2 SWAP3 SWAP2 SWAP1 PUSH2 0x573F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEF4 SWAP3 SWAP2 SWAP1 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x29EC JUMP JUMPDEST PUSH2 0xF48 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xF72 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xFAD JUMPI PUSH2 0xFAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH32 0x0 PUSH1 0x0 NOT PUSH2 0x2A1E JUMP JUMPDEST POP POP POP POP POP DUP1 ISZERO PUSH2 0xFC4 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFF1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1056 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E736665722066726F6D20746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1087 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1092 DUP6 DUP3 DUP6 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x10BE DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x10EC DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1114 PUSH1 0x1 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH2 0x1123 JUMPI DUP2 PUSH2 0x1145 JUMP JUMPDEST PUSH32 0x0 JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1195 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x11A1 JUMPI PUSH1 0x0 NOT PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11C1 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11D5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x11E3 JUMPI PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11EE PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x416A1587 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE TIMESTAMP PUSH1 0x84 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x416A1587 SWAP1 PUSH1 0xA4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x127C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x5496 JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x12C5 JUMPI PUSH2 0x12BD PUSH2 0x1BA9 JUMP JUMPDEST POP SWAP2 POP PUSH2 0x12D3 JUMP JUMPDEST PUSH2 0x12CD PUSH2 0x2001 JUMP JUMPDEST POP SWAP1 SWAP3 POP POP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO SWAP2 POP JUMP JUMPDEST PUSH2 0x12EE CALLER DUP7 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x130A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0x1319 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x132B DUP3 PUSH2 0x118B JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1368 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x13585E0811195C1BDCDA5D PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1373 DUP5 PUSH2 0x1C91 JUMP JUMPDEST SWAP1 POP PUSH2 0x138C DUP5 PUSH2 0x1382 DUP4 PUSH2 0x3128 JUMP JUMPDEST DUP6 PUSH1 0x0 PUSH1 0x1 PUSH2 0x24E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xFC4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1425 DUP5 PUSH2 0x168E JUMP JUMPDEST SWAP1 POP PUSH2 0x1434 DUP2 PUSH2 0x1382 DUP7 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 CALLER SWAP2 PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 SWAP2 ADD PUSH2 0x13CB JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO PUSH2 0x14DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617574686F72697A696E672073656C66206173206F706572 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x30BA37B9 PUSH1 0xE1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x152D JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x155C JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xF4CAEB2D6CA8932A215A353D0703C326EC2D81FC68170F320EB2AB49E9DF61F9 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x36 DUP1 SLOAD PUSH2 0x951 SWAP1 PUSH2 0x541D JUMP JUMPDEST PUSH2 0xFC4 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x1 PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP PUSH2 0x15CD PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND GT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1603 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x57DC JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH2 0x1634 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x1660 DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0xAEA DUP2 DUP3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1698 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x16CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16E4 DUP6 PUSH2 0xAF4 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x1701 JUMPI PUSH2 0x1701 DUP4 CALLER DUP4 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x170C DUP2 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND SWAP3 SWAP1 DUP8 AND SWAP2 CALLER SWAP2 PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x176A PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17D6 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EQ PUSH2 0x17F3 JUMPI PUSH2 0x17F3 DUP4 CALLER DUP8 PUSH2 0x2C8E JUMP JUMPDEST PUSH2 0x17FE DUP6 DUP6 DUP6 PUSH2 0x3142 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1808 PUSH2 0x1105 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1874 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1882 DUP4 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP5 DUP12 PUSH1 0x40 MLOAD PUSH2 0x18DC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18F8 PUSH2 0x15C2 JUMP JUMPDEST PUSH2 0x1909 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB PUSH2 0x190C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1925 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x194A JUMPI PUSH1 0x0 PUSH2 0x1934 PUSH2 0x2238 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1940 PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9F9 SWAP1 DUP6 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1955 PUSH2 0x11A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1F0750C1 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH5 0xFFFFFFFFFF DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xA4 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xF83A8608 SWAP1 PUSH1 0xC4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A11 SWAP2 SWAP1 PUSH2 0x54D3 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1A44 PUSH1 0x7 PUSH2 0x1A37 PUSH2 0x1B8B JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND TIMESTAMP PUSH2 0x31A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 ISZERO PUSH2 0x1A57 JUMPI PUSH1 0x0 SWAP3 POP POP POP SWAP1 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C SWAP1 PUSH2 0x9CB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A96 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1AB1 SWAP2 SWAP1 PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xFC4 DUP4 DUP3 PUSH2 0x220A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1B55 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST DUP1 PUSH2 0xA03 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA2 PUSH1 0x65 SLOAD PUSH1 0x30 DUP2 SWAP1 SHR SWAP2 PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 SWAP1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x1BE6 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C26 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C4A SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x4 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1C67 JUMPI PUSH2 0x1C67 PUSH2 0x5215 JUMP JUMPDEST EQ ISZERO PUSH2 0x1C7F JUMPI POP DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C9B PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x13585D1D5C9959 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xB0C DUP3 PUSH2 0x191B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x1D00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x1D10 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x1D49 JUMPI POP DUP1 DUP7 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1D55 JUMPI POP PUSH1 0x0 DUP6 SGT JUMPDEST PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x125B9D985B1A59 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB0DE2217 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xB0DE2217 SWAP1 PUSH1 0x24 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E16 SWAP2 SWAP1 PUSH2 0x59BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A9B7FDB PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB536FFB6 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1EA8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x5A72 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND ISZERO DUP1 ISZERO PUSH2 0x1EC8 JUMPI POP DUP1 MLOAD PUSH1 0x1 EQ JUMPDEST DUP1 ISZERO PUSH2 0x1F37 JUMPI POP DUP3 PUSH2 0x1F35 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1EE6 JUMPI PUSH2 0x1EE6 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F05 JUMPI PUSH2 0x1F05 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F24 JUMPI PUSH2 0x1F24 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x288C JUMP JUMPDEST EQ JUMPDEST PUSH2 0x1F40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1F9C JUMPI DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0x1FD6 SWAP3 POP POP POP JUMP JUMPDEST DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP4 POP POP POP POP JUMPDEST PUSH2 0x1FE4 DUP12 DUP11 DUP5 DUP5 PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EBAD18E PUSH2 0x203E PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x140 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A2 SWAP2 SWAP1 PUSH2 0x594F JUMP JUMPDEST POP DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP7 SWAP2 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ ISZERO PUSH2 0x211F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207265766F6B696E672073656C66206173206F70657261746F PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x38 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x2173 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x219F JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x39 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x50546E66E5F44D728365DC3908C63BC5CFEEAB470722C1677E3073A6AC294AA1 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMP JUMPDEST PUSH2 0x21E2 CALLER DUP6 PUSH2 0x1AEA JUMP JUMPDEST PUSH2 0x21FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5820 JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x2225 CALLER DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x3439 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2243 PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22DB SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x1BAEFC5D PUSH1 0xE2 SHL DUP2 MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x6EBBF174 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x237D SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 SGT PUSH2 0xA03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x4D75737420536574746C65 PUSH1 0xA8 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2421 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F76652066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20617070726F766520746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x2507 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH2 0x2514 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x2551 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1990D85CDA081B585D1D5C9959 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x255D DUP4 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x25D5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25D0 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x25D7 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP DUP2 ISZERO PUSH2 0x2734 JUMPI PUSH2 0x2614 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2676 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x268A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x26AB PUSH2 0x269B PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x26A3 PUSH2 0x1A25 JUMP JUMPDEST DUP12 DUP12 DUP11 PUSH2 0x3793 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x276B64B DUP11 ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26FC SWAP3 SWAP2 SWAP1 PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x27EB JUMP JUMPDEST PUSH2 0x2749 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER ADDRESS DUP12 PUSH2 0x375B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2766 PUSH2 0x2756 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x275E PUSH2 0x1A25 JUMP JUMPDEST DUP11 DUP10 DUP10 PUSH2 0x3978 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x541F527 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x541F5270 SWAP1 PUSH2 0x27B7 SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5CAA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH2 0x2820 DUP7 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB AND PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 PUSH2 0x32F0 JUMP JUMPDEST PUSH2 0x282C DUP4 CALLER DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP4 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2855 DUP7 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x285F SWAP1 DUP4 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x2874 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2880 DUP6 DUP8 PUSH2 0x3E4E JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFF DUP5 GT ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x28AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x8 DUP3 GT ISZERO PUSH2 0x28BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xFFFF000000000000 PUSH1 0x30 DUP5 SWAP1 SHL AND PUSH6 0xFFFFFFFFFF00 PUSH1 0x8 DUP5 SWAP1 SHL AND OR PUSH1 0xFF DUP3 AND OR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x290B JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0x2935 JUMPI DUP1 PUSH2 0x291F DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP PUSH2 0x292E SWAP1 POP PUSH1 0xA DUP4 PUSH2 0x5471 JUMP JUMPDEST SWAP2 POP PUSH2 0x290F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x294F JUMPI PUSH2 0x294F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2979 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x29E4 JUMPI PUSH2 0x298E PUSH1 0x1 DUP4 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP PUSH2 0x299B PUSH1 0xA DUP7 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x29A6 SWAP1 PUSH1 0x30 PUSH2 0x5D2E JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x29BB JUMPI PUSH2 0x29BB PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0x29DD PUSH1 0xA DUP7 PUSH2 0x5471 JUMP JUMPDEST SWAP5 POP PUSH2 0x297D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2A13 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST PUSH2 0xFC4 DUP4 DUP4 DUP4 PUSH2 0x4039 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x2A98 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A96 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x2B03 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x4223 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x29DDB589B1FB5FC7CF394961C1ADF5F8C6454761ADF795E67FE149F658ABE895 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C0B SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2C85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3AD5CBC1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x75AB9782 SWAP1 PUSH2 0x2C52 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3B PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0xBF7 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2D0D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20696E73756666696369656E7420616C6C6F77616E63650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0xBF7 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x23BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP4 DUP2 LT ISZERO PUSH2 0x2D93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220616D6F756E74206578636565647320 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x62616C616E6365 PUSH1 0xC8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP6 SUB SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP7 SWAP3 SWAP1 PUSH2 0x2DCA SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x6B541DDAA720DB2B10A4D0CDAC39B8D360425FC073085FAC19BC82614677987 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2E22 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD PUSH2 0x2E6F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x555DDC65 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0xB281FC8C12954D22544DB45DE3159A39272895B169A852B314F9CC762E44C53B PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0xAABBB8CA SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F25 SWAP2 SWAP1 PUSH2 0x5DC0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x2FA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x23DE29 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH3 0x23DE29 SWAP1 PUSH2 0x2F6A SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x5DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x303B JUMP JUMPDEST DUP2 ISZERO PUSH2 0x303B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EXTCODESIZE ISZERO PUSH2 0x303B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x4D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A20746F6B656E20726563697069656E7420636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20686173206E6F20696D706C656D656E74657220666F7220455243373737546F PUSH1 0x64 DUP3 ADD MSTORE PUSH13 0x1AD95B9CD49958DA5C1A595B9D PUSH1 0x9A SHL PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH2 0xC7B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x30A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E642066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x30FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A2073656E6420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x310B DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2B66 JUMP JUMPDEST PUSH2 0x3119 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2D1A JUMP JUMPDEST PUSH2 0x2C85 DUP2 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP4 DUP6 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 MLOAD SWAP1 SWAP3 PUSH2 0x317E SWAP3 SWAP2 ADD PUSH2 0x5883 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP3 MSTORE SWAP2 POP PUSH2 0xBF7 SWAP1 DUP4 SWAP1 DUP7 SWAP1 DUP5 SWAP1 PUSH2 0x3439 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 GT PUSH2 0x31F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x10D1CE881B9BC81B585C9AD95D1CC81B1A5CDD1959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x7 DUP6 GT ISZERO PUSH2 0x323C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x10D1CE881B585C9AD95D081A5B99195E08189BDD5B99 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3247 DUP5 PUSH2 0x3C0C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 JUMPDEST DUP7 DUP2 GT PUSH2 0x32A9 JUMPI PUSH1 0x0 PUSH2 0x325E DUP3 PUSH2 0x3C76 JUMP JUMPDEST PUSH2 0x3268 SWAP1 DUP5 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP DUP7 DUP2 EQ ISZERO PUSH2 0x3280 JUMPI POP SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST DUP7 DUP2 GT ISZERO PUSH2 0x3296 JUMPI POP SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x32E8 SWAP1 POP JUMP JUMPDEST POP DUP1 PUSH2 0x32A1 DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x324C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x10D1CE881B9BC81B585C9AD95D08199BDD5B99 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x3346 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP DUP5 PUSH1 0x34 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x335D SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x338A SWAP1 DUP5 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x33A0 SWAP1 POP DUP2 PUSH1 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x2E80 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2FE5BE0146F74C5BCE36C0B80911AF6C7D86FF27E89D5CFA61FC681327954E5D DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x33E7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SLOAD EQ ISZERO PUSH2 0x345C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5985 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x66 SSTORE PUSH1 0x0 PUSH2 0x346C PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3484 SWAP2 SWAP1 PUSH2 0x5E5F JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x34E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265636569766572206973207A65726F20616464726573730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH2 0x34ED DUP7 DUP7 DUP7 DUP7 PUSH2 0x42F5 JUMP JUMPDEST PUSH2 0x34F5 PUSH2 0x15C2 JUMP JUMPDEST ISZERO PUSH2 0x369C JUMPI PUSH1 0x40 MLOAD PUSH4 0xF667F897 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xF667F897 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x355B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x356F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x357D PUSH2 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFC1B1345 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xFC1B1345 SWAP1 PUSH1 0x44 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3615 SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST POP POP SWAP1 POP DUP1 PUSH1 0x0 SLT PUSH2 0x3661 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x4E6567617469766520436173682042616C616E6365 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x366E DUP10 DUP5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3678 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH2 0x3693 DUP4 DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x368C DUP5 PUSH2 0x3128 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x449E JUMP JUMPDEST POP POP POP POP PUSH2 0x374E JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x3734 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF242432A ADDRESS DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x36E4 PUSH1 0x65 SLOAD SWAP1 JUMP JUMPDEST DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3706 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5EE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3693 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x374C DUP2 PUSH1 0x40 ADD MLOAD DUP7 DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x45DA JUMP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x66 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xBF7 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x37B2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x37AA JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x37DC JUMPI PUSH2 0x37DC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x37F9 JUMPI PUSH2 0x37F9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x380C JUMPI PUSH2 0x380C PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3824 JUMPI PUSH2 0x3824 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3852 JUMPI PUSH2 0x3852 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3877 JUMPI PUSH2 0x3877 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38A2 JUMPI PUSH2 0x38A2 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x38E9 JUMPI PUSH2 0x38E9 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP6 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x0 JUMPDEST PUSH1 0xFF AND SWAP1 SHL OR OR OR PUSH1 0x0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3945 JUMPI PUSH2 0x3945 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x398F JUMPI SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x39D4 JUMPI PUSH2 0x39D4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A02 JUMPI PUSH2 0x3A02 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD SWAP2 ISZERO ISZERO SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A47 JUMPI PUSH2 0x3A47 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 ADD MSTORE DUP1 MLOAD PUSH1 0xF0 DUP7 SWAP1 SHL PUSH1 0xFF PUSH1 0xF0 SHL AND PUSH1 0x98 DUP7 SWAP1 SHL PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB AND OR PUSH1 0x78 DUP6 SWAP1 SHL PUSH4 0xFFFFFFFF PUSH1 0x78 SHL AND OR SWAP1 DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3A96 JUMPI PUSH2 0x3A96 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3963 JUMPI PUSH2 0x3963 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x3B29 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B24 SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x3B2B JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH2 0x3B37 DUP4 DUP3 PUSH2 0x586C JUMP JUMPDEST SWAP2 POP DUP4 ISZERO PUSH2 0x3BEF JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x3BEA SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP DUP8 SWAP1 POP DUP5 PUSH2 0x4725 JUMP JUMPDEST PUSH2 0x3C03 JUMP JUMPDEST PUSH2 0x3C03 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP7 DUP5 PUSH2 0x4725 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C27 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C32 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x3C3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C4C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C57 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C62 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C6C SWAP1 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0xB0C SWAP1 DUP4 PUSH2 0x586C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 EQ ISZERO PUSH2 0x3CA5 JUMPI PUSH2 0x3C8F PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3C9A SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x2 EQ ISZERO PUSH2 0x3CDD JUMPI PUSH2 0x3CBC PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CC7 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x2 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x3 EQ ISZERO PUSH2 0x3D15 JUMPI PUSH2 0x3CF4 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CFF SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D0A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x4 EQ ISZERO PUSH2 0x3D4D JUMPI PUSH2 0x3D2C PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D37 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D42 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3CD2 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x5 EQ ISZERO PUSH2 0x3D90 JUMPI PUSH2 0x3D64 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D6F SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D7A SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3D85 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x6 EQ ISZERO PUSH2 0x3DD3 JUMPI PUSH2 0x3DA7 PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DB2 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DBD SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DC8 SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0xA PUSH2 0x5452 JUMP JUMPDEST DUP2 PUSH1 0x7 EQ ISZERO PUSH2 0x3E16 JUMPI PUSH2 0x3DEA PUSH3 0x15180 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3DF5 SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E00 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3E0B SWAP1 PUSH1 0x4 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0xB0C SWAP1 PUSH1 0x14 PUSH2 0x5452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x92DCECC2D8D2C840D2DCC8CAF PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E5C DUP6 PUSH2 0x4755 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E6B PUSH3 0x15180 DUP6 PUSH2 0x5D61 JUMP JUMPDEST ISZERO PUSH2 0x3E7D JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x3E91 JUMPI PUSH1 0x0 DUP1 SWAP3 POP SWAP3 POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EA1 DUP4 DUP8 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3EAB SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST SWAP1 POP PUSH1 0x5A DUP2 GT PUSH2 0x3EC2 JUMPI SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x4032 SWAP1 POP JUMP JUMPDEST PUSH2 0x168 DUP2 GT PUSH2 0x3F37 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3EDC DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3EE6 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3EF0 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3EFB PUSH1 0x5A DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F05 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F12 PUSH1 0x6 DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F1D SWAP1 PUSH1 0x5A PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x6 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x0 EQ SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x4032 JUMP JUMPDEST PUSH2 0x870 DUP2 GT PUSH2 0x3FA9 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3F51 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F5C SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3F66 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3F70 SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F7C PUSH2 0x168 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x3F86 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x3F93 PUSH1 0x1E DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3F9E SWAP1 PUSH1 0x87 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x1E DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x1DE2 DUP2 GT PUSH2 0x4026 JUMPI PUSH1 0x0 PUSH3 0x15180 PUSH2 0x3FC3 DUP2 PUSH1 0x6 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FCE SWAP1 PUSH1 0x5 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FD9 SWAP1 PUSH1 0x3 PUSH2 0x5452 JUMP JUMPDEST PUSH2 0x3FE3 SWAP1 DUP6 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x3FED SWAP2 SWAP1 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x3FF9 PUSH2 0x870 DUP5 PUSH2 0x586C JUMP JUMPDEST PUSH2 0x4003 SWAP2 SWAP1 PUSH2 0x5D2E JUMP JUMPDEST SWAP1 POP PUSH2 0x4010 PUSH1 0x5A DUP3 PUSH2 0x5471 JUMP JUMPDEST PUSH2 0x401B SWAP1 PUSH1 0xC3 PUSH2 0x5D2E JUMP JUMPDEST PUSH2 0x3F28 PUSH1 0x5A DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x0 SWAP4 POP SWAP4 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4060 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP1 PUSH2 0x5D75 JUMP JUMPDEST DUP3 MLOAD PUSH2 0x4073 SWAP1 PUSH1 0x35 SWAP1 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP2 MLOAD PUSH2 0x4087 SWAP1 PUSH1 0x36 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x4AA6 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x409B SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x4B26 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4104 JUMPI PUSH1 0x1 PUSH1 0x38 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x40C0 JUMPI PUSH2 0x40C0 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 PUSH2 0x40FC DUP2 PUSH2 0x5D46 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x409F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAC7FBAB5F54A3CA8194167523C6753BFEB96A445279294B6125B68CCE2177054 PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP1 PUSH4 0x29965A1D SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x417E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4192 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x29965A1D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0xAEA199E31A596269B42CDAFD93407F14436DB6E4CAD65417994C2EB37381E05A PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x1820A4B7618BDE71DCE8CDC73AAB6C95905FAD24 SWAP3 POP PUSH4 0x29965A1D SWAP2 POP PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x420F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C85 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4278 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4774 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xFC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4296 SWAP2 SWAP1 PUSH2 0x5F1D JUMP JUMPDEST PUSH2 0xFC4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x4356 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E2066726F6D20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST CALLER PUSH2 0x4366 DUP2 DUP7 PUSH1 0x0 DUP8 DUP8 DUP8 PUSH2 0x2B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP5 DUP2 LT ISZERO PUSH2 0x43DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433737373A206275726E20616D6F756E7420657863656564732062616C61 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x6E6365 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x33 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 DUP4 SUB SWAP1 SSTORE PUSH1 0x34 DUP1 SLOAD DUP8 SWAP3 SWAP1 PUSH2 0x440A SWAP1 DUP5 SWAP1 PUSH2 0x586C JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA78A9BE3A7B862D26933AD85FB11D80EF66B8F972D7CBBA06621D583943A4098 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x4458 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x3429 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x44AC DUP5 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4524 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x44FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x451F SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4526 JUMP JUMPDEST SELFBALANCE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x5E665D PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xFFFF DUP11 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 ISZERO ISZERO PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2F332E8 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x45CD SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST POP PUSH2 0x2880 DUP4 DUP9 DUP5 DUP5 PUSH2 0x3AB4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x45E8 DUP6 PUSH2 0x12AC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP2 PUSH2 0x4660 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4637 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x465B SWAP2 SWAP1 PUSH2 0x5325 JUMP JUMPDEST PUSH2 0x4662 JUMP JUMPDEST SELFBALANCE JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4689 PUSH2 0x4671 PUSH2 0x1A7F JUMP JUMPDEST PUSH2 0x4679 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x4682 DUP12 PUSH2 0x3128 JUMP JUMPDEST DUP10 DUP12 PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x276B64B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x276B64B SWAP1 PUSH2 0x46DA SWAP1 ADDRESS SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BDA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4708 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x4718 DUP5 DUP11 DUP6 DUP6 PUSH2 0x3AB4 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0xFC4 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B2F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15180 DUP3 LT ISZERO PUSH2 0x4767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C6C PUSH3 0x15180 DUP4 PUSH2 0x5D61 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x29E4 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x48F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x47A2 PUSH2 0x4A60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x479A JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x47CC JUMPI PUSH2 0x47CC PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47E9 JUMPI PUSH2 0x47E9 PUSH2 0x5215 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x47FC JUMPI PUSH2 0x47FC PUSH2 0x5215 JUMP JUMPDEST DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4814 JUMPI PUSH2 0x4814 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD SWAP1 PUSH2 0xFFFF AND SWAP1 DUP2 PUSH2 0xFFFF AND DUP2 MSTORE POP POP PUSH1 0x1 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4843 JUMPI PUSH2 0x4843 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD SWAP1 ISZERO ISZERO SWAP1 DUP2 ISZERO ISZERO DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x486D JUMPI PUSH2 0x486D PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x48B4 JUMPI PUSH2 0x48B4 PUSH2 0x5B5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0xC0 ADD MSTORE PUSH4 0xFFFFFFFF PUSH1 0x78 SHL PUSH1 0x78 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x98 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB PUSH1 0x98 DUP7 SWAP1 SHL AND PUSH1 0xFF PUSH1 0xF0 SHL PUSH1 0xF0 DUP9 SWAP1 SHL AND PUSH1 0xF8 PUSH1 0x1 PUSH2 0x3927 JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4957 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x49AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xC7B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x49CA SWAP2 SWAP1 PUSH2 0x5F3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4A07 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4A1C DUP3 DUP3 DUP7 PUSH2 0x4A27 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4A36 JUMPI POP DUP2 PUSH2 0xA03 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4A46 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP2 SWAP1 PUSH2 0x4C35 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x4AB2 SWAP1 PUSH2 0x541D JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x4AD4 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x4AED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x4B1A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4AFF JUMP JUMPDEST POP PUSH2 0x313E SWAP3 SWAP2 POP PUSH2 0x4B7B JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x4B1A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x4B1A JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4B46 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x313E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B7C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4BD1 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4BAC JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4BF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4BE0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBF7 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4C21 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xA03 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4C97 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x58 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4CE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4CF4 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x4D04 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4D14 DUP2 PUSH2 0x4CBA JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4D60 DUP2 PUSH2 0x4D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4D9B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DAB DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4DD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4DE3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4CBA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4C76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E7F JUMPI PUSH2 0x4E7F PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4ECF JUMPI PUSH2 0x4ECF PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4EF0 JUMPI PUSH2 0x4EF0 PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4F0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4F22 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST PUSH2 0x4EA7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4F37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4F6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4F77 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4F87 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4FAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4FB6 DUP10 DUP4 DUP11 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FD9 DUP9 DUP3 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4FF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5020 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x502B DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x504D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5059 DUP7 DUP3 DUP8 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x508A DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4DF3 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0xA0 DUP2 SLT ISZERO PUSH2 0x50AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x80 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x50C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x50E7 JUMPI PUSH2 0x50E7 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x50F8 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x5108 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x511B DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH2 0x512E DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP2 SWAP4 POP SWAP1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x515C DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4D70 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x5185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x5190 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x51A0 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x51CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x51DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x51ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x51FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD PUSH1 0x5 DUP4 LT PUSH2 0x5252 JUMPI PUSH2 0x5252 PUSH2 0x5215 JUMP JUMPDEST DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x5281 DUP2 PUSH2 0x4C61 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x52A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x52B0 DUP9 DUP4 DUP10 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x52C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52D3 DUP8 DUP3 DUP9 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x530F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x531B DUP6 DUP3 DUP7 ADD PUSH2 0x4EFE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 DUP5 SGT DUP3 DUP5 SGT DUP1 DUP3 AND DUP7 DUP5 DIV DUP7 GT AND ISZERO PUSH2 0x537A JUMPI PUSH2 0x537A PUSH2 0x533E JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL PUSH1 0x0 DUP8 SLT DUP3 DUP2 AND DUP8 DUP4 SDIV DUP10 SLT AND ISZERO PUSH2 0x5399 JUMPI PUSH2 0x5399 PUSH2 0x533E JUMP JUMPDEST PUSH1 0x0 DUP8 SLT SWAP3 POP DUP8 DUP3 SDIV DUP8 SLT DUP5 DUP5 AND AND ISZERO PUSH2 0x53B5 JUMPI PUSH2 0x53B5 PUSH2 0x533E JUMP JUMPDEST DUP8 DUP6 SDIV DUP8 SLT DUP2 DUP5 AND AND ISZERO PUSH2 0x53CB JUMPI PUSH2 0x53CB PUSH2 0x533E JUMP JUMPDEST POP POP POP SWAP3 SWAP1 SWAP4 MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x53FE JUMPI PUSH2 0x53FE PUSH2 0x53D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP3 EQ PUSH1 0x0 NOT DUP5 EQ AND ISZERO PUSH2 0x5418 JUMPI PUSH2 0x5418 PUSH2 0x533E JUMP JUMPDEST POP SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x5431 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1A57 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x546C JUMPI PUSH2 0x546C PUSH2 0x533E JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5480 JUMPI PUSH2 0x5480 PUSH2 0x53D9 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x54AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH2 0x54C3 PUSH1 0x40 DUP7 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x54F3 DUP2 PUSH2 0x4CA5 JUMP JUMPDEST SWAP3 POP PUSH2 0x5501 PUSH1 0x20 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x552A JUMPI PUSH2 0x552A PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x5555 PUSH2 0x4F1D DUP4 PUSH2 0x5511 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x5574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x5596 JUMPI PUSH2 0x5589 DUP2 PUSH2 0x5485 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x5578 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x55CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH2 0x160 DUP3 DUP7 SUB SLT ISZERO PUSH2 0x55DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x55E7 PUSH2 0x4E5C JUMP JUMPDEST PUSH2 0x55F0 DUP4 PUSH2 0x5485 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x55FE PUSH1 0x20 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x560F PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x5620 PUSH1 0x60 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x5631 PUSH1 0x80 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x5642 PUSH1 0xA0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x5653 PUSH1 0xC0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x5664 PUSH1 0xE0 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x5677 DUP2 DUP6 ADD PUSH2 0x5485 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 DUP4 DUP2 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x568F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569B DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST DUP3 DUP5 ADD MSTORE POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD DUP4 DUP2 GT ISZERO PUSH2 0x56B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x56C1 DUP9 DUP3 DUP8 ADD PUSH2 0x5534 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x56E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x56FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x570B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5719 PUSH2 0x4F1D DUP3 PUSH2 0x4ED7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x572E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH9 0x2BB930B83832B21033 PUSH1 0xB9 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x5763 DUP2 PUSH1 0x9 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH3 0x10201 PUSH1 0xED SHL PUSH1 0x9 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x5786 DUP2 PUSH1 0xC DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0xC ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x3BB3 PUSH1 0xF1 SHL DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x57AF DUP2 PUSH1 0x2 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x2 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x57D0 DUP2 PUSH1 0x3 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x4BDD JUMP JUMPDEST ADD PUSH1 0x3 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433737373A2063616C6C6572206973206E6F7420616E206F70657261746F PUSH1 0x40 DUP3 ADD MSTORE PUSH12 0x39103337B9103437B63232B9 PUSH1 0xA1 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x587E JUMPI PUSH2 0x587E PUSH2 0x533E JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST DUP2 MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x58F5 JUMPI PUSH2 0x58F5 PUSH2 0x4E46 JUMP JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP1 SWAP2 POP DUP3 MLOAD PUSH2 0x5908 DUP2 PUSH2 0x4C61 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5918 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT PUSH2 0x5939 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x140 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x596D DUP5 DUP5 PUSH2 0x58C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x597C DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x58C1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x59CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x59F0 JUMPI PUSH2 0x59F0 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x59FE DUP2 PUSH2 0x4D2F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5A1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x5A2C PUSH1 0x40 DUP5 ADD PUSH2 0x5485 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5A3F DUP2 PUSH2 0x4D1F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT DUP2 AND DUP2 EQ PUSH2 0x5A66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5A9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x5AAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x5ABA PUSH2 0x4F1D DUP3 PUSH2 0x5511 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0xC0 SWAP2 DUP3 MUL DUP4 ADD DUP5 ADD SWAP2 DUP5 DUP3 ADD SWAP2 SWAP1 DUP9 DUP5 GT ISZERO PUSH2 0x5AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x5B4F JUMPI DUP1 DUP6 DUP11 SUB SLT ISZERO PUSH2 0x5AF6 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x5AFE PUSH2 0x4E85 JUMP JUMPDEST DUP6 MLOAD DUP2 MSTORE DUP7 DUP7 ADD MLOAD DUP8 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP8 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xA0 DUP1 DUP8 ADD MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x5B3C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP1 DUP3 ADD MSTORE DUP4 MSTORE SWAP4 DUP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH2 0x5ADE JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5B86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5BCF JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5BB3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI PUSH1 0x5F NOT DUP11 DUP5 SUB ADD DUP6 MSTORE DUP2 MLOAD PUSH1 0xE0 DUP2 MLOAD PUSH1 0x7 DUP2 LT PUSH2 0x5C38 JUMPI PUSH2 0x5C38 PUSH2 0x5215 JUMP JUMPDEST DUP6 MSTORE DUP2 DUP9 ADD MLOAD PUSH2 0xFFFF AND DUP9 DUP7 ADD MSTORE DUP10 DUP3 ADD MLOAD DUP11 DUP7 ADD MSTORE DUP9 DUP3 ADD MLOAD DUP10 DUP7 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xA0 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE PUSH1 0xC0 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5C86 DUP2 DUP7 ADD DUP4 PUSH2 0x5B9F JUMP JUMPDEST SWAP7 DUP9 ADD SWAP7 SWAP5 POP POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5C11 JUMP JUMPDEST POP SWAP1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP4 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH1 0x60 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x5 DUP2 SWAP1 SHL DUP8 ADD DUP5 ADD DUP9 DUP5 ADD DUP8 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5C9A JUMPI DUP10 DUP4 SUB PUSH1 0x5F NOT ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD PUSH2 0xFFFF AND DUP5 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP6 ADD MSTORE DUP9 ADD MLOAD DUP9 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x5D1B DUP9 DUP6 ADD DUP3 PUSH2 0x5B9F JUMP JUMPDEST SWAP6 DUP8 ADD SWAP6 SWAP4 POP POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5CE1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x5D41 JUMPI PUSH2 0x5D41 PUSH2 0x533E JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x5D5A JUMPI PUSH2 0x5D5A PUSH2 0x533E JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x5D70 JUMPI PUSH2 0x5D70 PUSH2 0x53D9 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5DD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP3 MSTORE DUP7 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x5E18 SWAP1 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x4718 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5E43 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4C09 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x5E55 DUP2 DUP6 PUSH2 0x4C09 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x5E93 JUMPI PUSH2 0x5E93 PUSH2 0x4E46 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x5EA1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5EB1 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x5EC4 DUP2 PUSH2 0x4C61 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5ED7 DUP2 PUSH2 0x4CBA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4A1C SWAP1 DUP4 ADD DUP5 PUSH2 0x4C09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5F2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA03 DUP2 PUSH2 0x4E1B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5F4C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4BDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 LOG1 0xB1 EXTCODEHASH PUSH4 0x34F51FEA 0xCC TIMESTAMP SIGNEXTEND PUSH23 0x1034EAA98F0A8AD53025E508EADF0058B2523664736F6C PUSH4 0x4300080B STOP CALLER ",
              "sourceMap": "123:9272:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:941;;;:::i;:::-;;;160:25:43;;;148:2;133:18;1244:941:37;;;;;;;;3337:93:36;3415:8;;3337:93;;7330:130:2;;;:::i;:::-;;;;;;;:::i;3484:98::-;;;:::i;:::-;;;;;;;:::i;3522:875:37:-;;;;;;:::i;:::-;;:::i;9088:197:2:-;;;;;;:::i;:::-;;:::i;:::-;;;2512:14:43;;2505:22;2487:41;;2475:2;2460:18;9088:197:2;2347:187:43;5572:596:37;;;;;;:::i;:::-;;:::i;1337:269:38:-;;;;;;:::i;:::-;;:::i;:::-;;1406:1864:36;;;;;;:::i;:::-;;:::i;4277:145:2:-;4403:12;;4277:145;;778:39:36;;;;;;;;-1:-1:-1;;;;;4227:32:43;;;4209:51;;4197:2;4182:18;778:39:36;4043:223:43;9767:639:2;;;;;;:::i;:::-;;:::i;1975:273:38:-;;;;;;:::i;:::-;;:::i;4389:82:36:-;4463:1;4389:82;;;4904:4:43;4892:17;;;4874:36;;4862:2;4847:18;4389:82:36;4732:184:43;301:191:37;;;:::i;7318:386:38:-;;;;;;:::i;:::-;;:::i;4445:128:37:-;;;;;;:::i;:::-;;:::i;4142:177:36:-;;;:::i;:::-;;;;6040:6:43;6028:19;;;6010:38;;6096:12;6084:25;;;6079:2;6064:18;;6057:53;5983:18;4142:177:36;5840:276:43;6219:579:37;;;;;;:::i;:::-;;:::i;6212:309:36:-;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;6691:32:43;;;6673:51;;6767:14;;6760:22;6755:2;6740:18;;6733:50;6646:18;6212:309:36;6490:299:43;4121:95:2;4208:1;4121:95;;7579:366;;;;;;:::i;:::-;;:::i;6843:360:37:-;;;;;;:::i;:::-;;:::i;4522:172:2:-;;;;;;:::i;:::-;-1:-1:-1;;;;;4665:22:2;4639:7;4665:22;;;:9;:22;;;;;;;4522:172;7802:390:38;;;;;;:::i;:::-;;:::i;7245:290:37:-;;;;;;:::i;:::-;;:::i;6385:412:2:-;;;;;;:::i;:::-;;:::i;3638:102::-;;;:::i;4824:193::-;;;;;;:::i;:::-;;:::i;3748:114:36:-;;;:::i;5248:439:2:-;;;;;;:::i;:::-;;:::i;823:28:36:-;;;;;5353:166:37;;;;;;:::i;:::-;;:::i;7581:433::-;;;;;;:::i;:::-;;:::i;8058:713::-;;;;;;:::i;:::-;;:::i;4618:124::-;;;;;;:::i;:::-;;:::i;2238:1231::-;;;;;;:::i;:::-;;:::i;4630:406:36:-;;;:::i;4791:132:37:-;;;;;;:::i;:::-;;:::i;3922:158:36:-;;;:::i;:::-;;;10978:6:43;10966:19;;;10948:38;;10936:2;10921:18;3922:158:36;10804:188:43;6978:240:38;;;;;;:::i;:::-;;:::i;4970:113:37:-;;;;;;:::i;:::-;;:::i;6007:311:2:-;;;;;;:::i;:::-;;:::i;8630:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8746:19:2;;;8720:7;8746:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8630:151;3503:152:36;;;:::i;:::-;;;12637:12:43;12625:25;;;12607:44;;12595:2;12580:18;3503:152:36;12463:194:43;5247:502:36;;;:::i;:::-;;;;-1:-1:-1;;;;;12867:32:43;;;12849:51;;12931:2;12916:18;;12909:34;;;;12822:18;5247:502:36;12662:287:43;5135:169:37;;;;;;:::i;:::-;;:::i;5090:1742:38:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;14126:33:43;;;14108:52;;14096:2;14081:18;5090:1742:38;13964:202:43;5895:311:36;;;:::i;:::-;;;;;;;;;:::i;6861:403:2:-;;;;;;:::i;:::-;;:::i;8066:325::-;;;;;;:::i;:::-;;:::i;5817:127::-;;;;;;:::i;:::-;;:::i;1244:941:37:-;1297:7;1320:12;:10;:12::i;:::-;1316:863;;;1355:31;:29;:31::i;:::-;1348:38;;1244:941;:::o;1316:863::-;1425:16;1445:20;:18;:20::i;:::-;1417:48;;;1592:17;1611:15;1630:14;:12;:14::i;:::-;1591:53;;;;1658:17;1678:10;-1:-1:-1;;;;;1678:31:37;;1727:10;1755:8;1788:13;4403:12:2;;;4277:145;1788:13:37;1678:255;;-1:-1:-1;;;;;;1678:255:37;;;;;;;16153:6:43;16141:19;;;1678:255:37;;;16123:38:43;16209:12;16197:25;;;16177:18;;;16170:53;16239:18;;;16232:34;1881:15:37;16282:18:43;;;16275:34;1914:5:37;16325:19:43;;;16318:51;16095:19;;1678:255:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1658:275;-1:-1:-1;1948:17:37;423:3:30;1969:22:37;1982:9;1658:275;1969:22;:::i;:::-;1968:61;;;;:::i;:::-;1948:81;;2126:1;2112:10;:15;;2104:24;;;;;;2157:10;1244:941;-1:-1:-1;;;;;1244:941:37:o;7330:130:2:-;7396:16;7431:22;7424:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7424:29:2;;;;;;;;;;;;;;;;;;;;;;;7330:130;:::o;3484:98::-;3538:13;3570:5;3563:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3563:12:2;;3484:98;-1:-1:-1;;;;;3484:98:2:o;3522:875:37:-;3593:14;3623:12;:10;:12::i;:::-;3619:772;;;3651:26;3680:31;:29;:31::i;:::-;3651:60;;3878:13;4403:12:2;;;4277:145;3878:13:37;3847:27;3856:18;3847:6;:27;:::i;:::-;3846:45;;;;:::i;:::-;3839:52;3522:875;-1:-1:-1;;;3522:875:37:o;3619:772::-;4034:17;4053:15;4072:14;:12;:14::i;:::-;4157:178;;-1:-1:-1;;;4157:178:37;;18564:6:43;18552:19;;4157:178:37;;;18534:38:43;18588:18;;;18581:34;;;18663:12;18651:25;;18631:18;;;18624:53;4101:31:37;18693:18:43;;;18686:51;;;4306:15:37;18753:19:43;;;18746:35;4033:53:37;;-1:-1:-1;4033:53:37;;-1:-1:-1;;;;;;4157:10:37;:34;;;;18506:19:43;;4157:178:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4100:235:37;;3522:875;-1:-1:-1;;;;;;;3522:875:37:o;3619:772::-;3522:875;;;:::o;9088:197:2:-;9170:4;929:10:7;9225:32:2;929:10:7;9242:7:2;9251:5;9225:8;:32::i;:::-;-1:-1:-1;9274:4:2;;9088:197;-1:-1:-1;;;9088:197:2:o;5572:596:37:-;5643:14;5673:12;:10;:12::i;:::-;5669:493;;;5710:23;5726:6;5710:15;:23::i;:::-;5701:32;3522:875;-1:-1:-1;;3522:875:37:o;5669:493::-;5856:17;5875:15;5894:14;:12;:14::i;:::-;5947:204;;-1:-1:-1;;;5947:204:37;;19665:6:43;19653:19;;5947:204:37;;;19635:38:43;19689:18;;;19682:34;;;19764:12;19752:25;;19732:18;;;19725:53;6081:1:37;19794:18:43;;;19787:51;6100:15:37;19854:19:43;;;19847:35;6133:4:37;19898:19:43;;;19891:51;5855:53:37;;-1:-1:-1;5855:53:37;-1:-1:-1;5947:10:37;-1:-1:-1;;;;;5947:38:37;;;;19607:19:43;;5947:204:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;5922:229:37;;5572:596;-1:-1:-1;;;;5572:596:37:o;1337:269:38:-;1517:82;1531:21;1554:11;1567:8;1577:14;1593:5;1517:13;:82::i;:::-;1337:269;;;;:::o;1406:1864:36:-;2369:13:0;;;;;;;:48;;2405:12;;;;2404:13;2369:48;;;3147:4;1476:19:6;:23;2385:16:0;2361:107;;;;-1:-1:-1;;;2361:107:0;;20551:2:43;2361:107:0;;;20533:21:43;20590:2;20570:18;;;20563:30;20629:34;20609:18;;;20602:62;-1:-1:-1;;;20680:18:43;;;20673:44;20734:19;;2361:107:0;;;;;;;;;2479:19;2502:13;;;;;;2501:14;2525:98;;;;2559:13;:20;;-1:-1:-1;;2593:19:0;;;;;2525:98;1539:35:36::1;::::0;-1:-1:-1;;;1539:35:36;;10978:6:43;10966:19;;1539:35:36::1;::::0;::::1;10948:38:43::0;1502:34:36::1;::::0;1539:10:::1;-1:-1:-1::0;;;;;1539:23:36::1;::::0;::::1;::::0;10921:18:43;;1539:35:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1539:35:36::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1592:24:::0;;1502:72;;-1:-1:-1;1592:28:36::1;;1584:57;;;::::0;-1:-1:-1;;;1584:57:36;;23394:2:43;1584:57:36::1;::::0;::::1;23376:21:43::0;23433:2;23413:18;;;23406:30;-1:-1:-1;;;23452:18:43;;;23445:46;23508:18;;1584:57:36::1;23192:340:43::0;1584:57:36::1;1897:24:::0;;1872:77:::1;::::0;::::1;;;::::0;::::1;1933:15;1872:24;:77::i;:::-;1851:140;;;::::0;-1:-1:-1;;;1851:140:36;;23739:2:43;1851:140:36::1;::::0;::::1;23721:21:43::0;23778:2;23758:18;;;23751:30;-1:-1:-1;;;23797:18:43;;;23790:46;23853:18;;1851:140:36::1;23537:340:43::0;1851:140:36::1;2055:78;;::::0;::::1;;::::0;::::1;1734:1:30;2055:28:36;:78::i;:::-;2044:8;:89:::0;2145:22:::1;2178:20;:18;:20::i;:::-;2144:54;;;2209:17;2244:15;:13;:15::i;:::-;-1:-1:-1::0;2208:51:36;;-1:-1:-1;2270:21:36::1;::::0;-1:-1:-1;;;;;;2294:49:36;::::1;::::0;:133:::1;;2401:15;-1:-1:-1::0;;;;;2378:47:36::1;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;2378:49:36::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;2294:133;;;;;;;;;;;;;;;;-1:-1:-1::0;;;2294:133:36::1;;::::0;::::1;2270:157;;2438:23;2464:26;2481:8;2464:26;;:16;:26::i;:::-;2438:52;;2501:278;2585:7;2601:9;2555:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2678:7;2692:9;2655:47;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;2655:47:36;;::::1;::::0;;;2767:1:::1;2753:16:::0;;::::1;::::0;::::1;::::0;;;2655:47;2501:13:::1;:278::i;:::-;2960:62;-1:-1:-1::0;;;;;2960:22:36;::::1;2991:10;-1:-1:-1::0;;2960:22:36::1;:62::i;:::-;3080:15;-1:-1:-1::0;;;;;3049:47:36::1;3057:10;-1:-1:-1::0;;;;;3049:47:36::1;;;:112;;;;-1:-1:-1::0;;;;;;3112:49:36;::::1;::::0;::::1;3049:112;3032:232;;;3186:67;-1:-1:-1::0;;;;;3186:27:36;::::1;3222:10;-1:-1:-1::0;;3186:27:36::1;:67::i;:::-;1492:1778;;;;;2649:14:0::0;2645:66;;;2695:5;2679:21;;-1:-1:-1;;2679:21:0;;;2645:66;2080:637;1406:1864:36;;:::o;9767:639:2:-;9903:4;-1:-1:-1;;;;;9927:23:2;;9919:72;;;;-1:-1:-1;;;9919:72:2;;;;;;;:::i;:::-;-1:-1:-1;;;;;10009:20:2;;10001:71;;;;-1:-1:-1;;;10001:71:2;;26640:2:43;10001:71:2;;;26622:21:43;26679:2;26659:18;;;26652:30;26718:34;26698:18;;;26691:62;-1:-1:-1;;;26769:18:43;;;26762:36;26815:19;;10001:71:2;26438:402:43;10001:71:2;10083:15;929:10:7;10083:30:2;;10124:61;10142:7;10151:6;10159:9;10170:6;10124:61;;;;;;;;;;;;;;;;;;;;;;;;:17;:61::i;:::-;10196:40;10212:6;10220:7;10229:6;10196:15;:40::i;:::-;10247:49;10253:7;10262:6;10270:9;10281:6;10247:49;;;;;;;;;;;;;;;;;;;;;;;;:5;:49::i;:::-;10307:70;10327:7;10336:6;10344:9;10355:6;10307:70;;;;;;;;;;;;;;;;;;;;;;;;10371:5;10307:19;:70::i;:::-;-1:-1:-1;10395:4:2;;9767:639;-1:-1:-1;;;;9767:639:2:o;1975:273:38:-;2160:81;2174:21;2197:11;2210:8;2220:14;2236:4;2160:13;:81::i;301:191:37:-;348:7;368:22;392:10;406:14;415:4;406:8;:14::i;:::-;367:53;;;;437:5;:48;;469:15;437:48;;;453:4;437:48;430:55;;;;301:191;:::o;7318:386:38:-;7456:241;7476:6;7496:191;;;;;;;;7545:5;7496:191;;;;;;7583:5;7496:191;;;;;;7616:8;-1:-1:-1;;;;;7496:191:38;;;;;7658:14;7496:191;;;;;7456:6;:241::i;4445:128:37:-;4504:7;4530:12;:10;:12::i;:::-;:36;;-1:-1:-1;;4530:36:37;;;4545:1;4523:43;4445:128;-1:-1:-1;;4445:128:37:o;4142:177:36:-;4196:17;4215:15;4274:38;4303:8;;458:2:32;452:8;;;;420:1;414:7;;;;383:2;168:300;4274:38:36;-1:-1:-1;4242:70:36;;;;-1:-1:-1;4142:177:36;-1:-1:-1;4142:177:36:o;6219:579:37:-;6288:14;6318:12;:10;:12::i;:::-;6314:478;;;6355:23;6371:6;6355:15;:23::i;6314:478::-;6501:17;6520:15;6539:14;:12;:14::i;:::-;6599:182;;-1:-1:-1;;;6599:182:37;;18564:6:43;18552:19;;6599:182:37;;;18534:38:43;18588:18;;;18581:34;;;18663:12;18651:25;;18631:18;;;18624:53;6733:1:37;18693:18:43;;;18686:51;6752:15:37;18753:19:43;;;18746:35;6500:53:37;;-1:-1:-1;6500:53:37;-1:-1:-1;6599:10:37;-1:-1:-1;;;;;6599:38:37;;;;18506:19:43;;6599:182:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6567:214:37;;6219:579;-1:-1:-1;;;;;;6219:579:37:o;6212:309:36:-;6271:12;6285:10;6311:13;6307:151;;;6357:20;:18;:20::i;:::-;-1:-1:-1;6340:37:36;-1:-1:-1;6307:151:36;;;6432:15;:13;:15::i;:::-;-1:-1:-1;6408:39:36;;-1:-1:-1;;6307:151:36;-1:-1:-1;6483:5:36;-1:-1:-1;;;;;6475:39:36;;;;-1:-1:-1;6212:309:36:o;7579:366:2:-;7786:35;929:10:7;7814:6:2;7786:13;:35::i;:::-;7778:92;;;;-1:-1:-1;;;7778:92:2;;;;;;;:::i;:::-;7880:58;7886:6;7894:9;7905:6;7913:4;7919:12;7933:4;7880:5;:58::i;:::-;7579:366;;;;;:::o;6843:360:37:-;6919:7;6956:20;6967:8;6956:10;:20::i;:::-;6946:6;:30;;6938:54;;;;-1:-1:-1;;;6938:54:37;;27460:2:43;6938:54:37;;;27442:21:43;27499:2;27479:18;;;27472:30;-1:-1:-1;;;27518:18:43;;;27511:41;27569:18;;6938:54:37;27258:335:43;6938:54:37;7002:14;7019:22;7034:6;7019:14;:22::i;:::-;7002:39;;7052:61;7066:6;7074:19;7086:6;7074:11;:19::i;:::-;7095:8;7105:1;7108:4;7052:13;:61::i;:::-;7128:45;;;27772:25:43;;;27828:2;27813:18;;27806:34;;;-1:-1:-1;;;;;7128:45:37;;;7136:10;;7128:45;;27745:18:43;7128:45:37;;;;;;;;7190:6;6843:360;-1:-1:-1;;;6843:360:37:o;7802:390:38:-;7945:240;7965:6;7985:190;;;;;;;;8034:4;7985:190;;;;;;8071:5;7985:190;;;;;;8104:8;-1:-1:-1;;;;;7985:190:38;;;;;8146:14;7985:190;;;;;7945:6;:240::i;7245:290:37:-;7318:7;7337:14;7354:19;7366:6;7354:11;:19::i;:::-;7337:36;;7384:61;7398:6;7406:19;7418:6;7406:11;:19::i;7384:61::-;7460:45;;;27772:25:43;;;27828:2;27813:18;;27806:34;;;-1:-1:-1;;;;;7460:45:37;;;7468:10;;7460:45;;27745:18:43;7460:45:37;27598:248:43;6385:412:2;929:10:7;-1:-1:-1;;;;;6472:24:2;;;;6464:73;;;;-1:-1:-1;;;6464:73:2;;28053:2:43;6464:73:2;;;28035:21:43;28092:2;28072:18;;;28065:30;28131:34;28111:18;;;28104:62;-1:-1:-1;;;28182:18:43;;;28175:34;28226:19;;6464:73:2;27851:400:43;6464:73:2;-1:-1:-1;;;;;6552:27:2;;;;;;:17;:27;;;;;;;;6548:185;;;929:10:7;6602:38:2;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;6602:48:2;;;;;;;;;6595:55;;-1:-1:-1;;6595:55:2;;;6548:185;;;929:10:7;6681:24:2;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;6681:34:2;;;;;;;;;:41;;-1:-1:-1;;6681:41:2;6718:4;6681:41;;;6548:185;6748:42;;929:10:7;;-1:-1:-1;;;;;6748:42:2;;;;;;;;6385:412;:::o;3638:102::-;3694:13;3726:7;3719:14;;;;;:::i;4824:193::-;4956:54;929:10:7;4976:9:2;4987:6;4995:4;4956:54;;;;;;;;;;;;5005:4;4956:5;:54::i;3748:114:36:-;3800:4;3840:15;3823:13;:11;:13::i;:::-;:32;;;;3816:39;;3748:114;:::o;5248:439:2:-;5334:4;-1:-1:-1;;;;;5358:23:2;;5350:72;;;;-1:-1:-1;;;5350:72:2;;;;;;;:::i;:::-;5433:12;929:10:7;5433:27:2;;5471:56;5489:4;5495;5501:9;5512:6;5471:56;;;;;;;;;;;;;;;;;;;;;;;;:17;:56::i;:::-;5538:44;5544:4;5550;5556:9;5567:6;5538:44;;;;;;;;;;;;;;;;;;;;;;;;:5;:44::i;:::-;5593:65;5613:4;5619;5625:9;5636:6;5593:65;;;;;;;;;;;;;;;;;;;;;;;;5652:5;5593:19;:65::i;5353:166:37:-;5420:7;5448:12;:10;:12::i;:::-;5447:13;5439:33;;;;-1:-1:-1;;;5439:33:37;;28458:2:43;5439:33:37;;;28440:21:43;28497:1;28477:18;;;28470:29;-1:-1:-1;;;28515:18:43;;;28508:37;28562:18;;5439:33:37;28256:330:43;5439:33:37;5489:23;5505:6;5489:15;:23::i;7581:433::-;7703:7;7722:14;7739:23;7755:6;7739:15;:23::i;:::-;7722:40;-1:-1:-1;7777:10:37;-1:-1:-1;;;;;7777:19:37;;;7773:92;;7812:42;7828:5;7835:10;7847:6;7812:15;:42::i;:::-;7874:40;7890:6;7898:8;7908:5;7874:15;:40::i;:::-;7930:53;;;27772:25:43;;;27828:2;27813:18;;27806:34;;;-1:-1:-1;;;;;7930:53:37;;;;;;;;7939:10;;7930:53;;27745:18:43;7930:53:37;;;;;;;8001:6;7581:433;-1:-1:-1;;;;7581:433:37:o;8058:713::-;8178:7;8338:21;8369:7;:5;:7::i;:::-;8362:35;;-1:-1:-1;;;8362:35:37;;-1:-1:-1;;;;;4227:32:43;;;8362:35:37;;;4209:51:43;8362:25:37;;;;;;;4182:18:43;;8362:35:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8338:59;-1:-1:-1;8412:10:37;-1:-1:-1;;;;;8412:19:37;;;8408:92;;8447:42;8463:5;8470:10;8482:6;8447:15;:42::i;:::-;8509:40;8525:6;8533:8;8543:5;8509:15;:40::i;:::-;8560:20;8590:7;:5;:7::i;:::-;8583:35;;-1:-1:-1;;;8583:35:37;;-1:-1:-1;;;;;4227:32:43;;;8583:35:37;;;4209:51:43;8583:25:37;;;;;;;4182:18:43;;8583:35:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8560:58;-1:-1:-1;8628:14:37;8645:28;8660:13;8560:58;8645:28;:::i;:::-;8628:45;;8719:5;-1:-1:-1;;;;;8688:53:37;8709:8;-1:-1:-1;;;;;8688:53:37;8697:10;-1:-1:-1;;;;;8688:53:37;;8726:6;8734;8688:53;;;;;;27772:25:43;;;27828:2;27813:18;;27806:34;27760:2;27745:18;;27598:248;8688:53:37;;;;;;;;8758:6;8058:713;-1:-1:-1;;;;;;8058:713:37:o;4618:124::-;4674:7;4700:12;:10;:12::i;:::-;:35;;-1:-1:-1;;;;;4700:35:37;;;4715:1;4700:35;-1:-1:-1;;;;;4693:42:37;;4618:124;-1:-1:-1;;4618:124:37:o;2238:1231::-;2309:14;2339:12;:10;:12::i;:::-;2335:1128;;;2367:26;2396:31;:29;:31::i;:::-;2367:60;;2961:18;2944:13;4403:12:2;;;4277:145;2944:13:37;2935:22;;:6;:22;:::i;2335:1128::-;3115:17;3134:15;3153:14;:12;:14::i;:::-;3219:200;;-1:-1:-1;;;3219:200:37;;19665:6:43;19653:19;;3219:200:37;;;19635:38:43;19689:18;;;19682:34;;;19764:12;19752:25;;19732:18;;;19725:53;3182:19:37;19794:18:43;;;19787:51;;;3368:15:37;19854:19:43;;;19847:35;3401:4:37;19898:19:43;;;19891:51;3114:53:37;;-1:-1:-1;3114:53:37;;-1:-1:-1;;;;;;3219:10:37;:34;;;;19607:19:43;;3219:200:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;3181:238:37;;2238:1231;-1:-1:-1;;;;;2238:1231:37:o;4630:406:36:-;4686:5;4704:19;4725:20;4749:136;585:1:30;4833:13:36;:11;:13::i;:::-;4749:136;;4860:15;4749:23;:136::i;:::-;4703:182;;;;4900:15;4896:29;;;4924:1;4917:8;;;;4630:406;:::o;4896:29::-;-1:-1:-1;5017:11:36;4630:406;-1:-1:-1;4630:406:36:o;4791:132:37:-;-1:-1:-1;;;;;4665:22:2;;4857:7:37;4665:22:2;;;:9;:22;;;;;;4883:33:37;;3522:875;:::i;3922:158:36:-;3977:17;4035:38;4064:8;;458:2:32;452:8;;;;420:1;414:7;;;;383:2;168:300;4035:38:36;-1:-1:-1;4006:67:36;;3922:158;-1:-1:-1;;3922:158:36:o;6978:240:38:-;7060:17;7091:4;7080:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;7060:36;;7193:18;7198:6;7206:4;7193;:18::i;4970:113:37:-;-1:-1:-1;;;;;4665:22:2;;5034:7:37;4665:22:2;;;:9;:22;;;;;;5060:16:37;4522:172:2;6007:311;6107:4;6154:11;-1:-1:-1;;;;;6142:23:2;:8;-1:-1:-1;;;;;6142:23:2;;:120;;;-1:-1:-1;;;;;;6182:27:2;;;;;;:17;:27;;;;;;;;:79;;;;-1:-1:-1;;;;;;6214:37:2;;;;;;;:24;:37;;;;;;;;:47;;;;;;;;;;;;6213:48;6182:79;6142:169;;;-1:-1:-1;;;;;;6278:23:2;;;;;;;:10;:23;;;;;;;;:33;;;;;;;;;;;;6123:188;6007:311;-1:-1:-1;;;6007:311:2:o;3503:152:36:-;3556:15;3610:38;3639:8;;458:2:32;452:8;;;;420:1;414:7;;;;383:2;168:300;3610:38:36;-1:-1:-1;3583:65:36;3503:152;-1:-1:-1;;3503:152:36:o;5247:502::-;5307:22;5331:26;5370:18;5390:23;5417:10;-1:-1:-1;;;;;5417:22:36;;5440:15;:13;:15::i;:::-;5417:39;;-1:-1:-1;;;;;;5417:39:36;;;;;;;10978:6:43;10966:19;;;5417:39:36;;;10948:38:43;10921:18;;5417:39:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5369:87;;-1:-1:-1;5369:87:36;-1:-1:-1;5490:21:36;5471:5;:15;;;:40;;;;;;;;:::i;:::-;;5467:276;;;-1:-1:-1;5604:18:36;;5625:14;;;;;5604:18;;5625:14;;-1:-1:-1;5247:502:36;-1:-1:-1;5247:502:36:o;5467:276::-;5686:23;;5712:19;;;;;5686:23;;5712:19;;-1:-1:-1;5247:502:36;-1:-1:-1;;5247:502:36:o;5135:169:37:-;5205:7;5233:12;:10;:12::i;:::-;5232:13;5224:33;;;;-1:-1:-1;;;5224:33:37;;28458:2:43;5224:33:37;;;28440:21:43;28497:1;28477:18;;;28470:29;-1:-1:-1;;;28515:18:43;;;28508:37;28562:18;;5224:33:37;28256:330:43;5224:33:37;5274:23;5290:6;5274:15;:23::i;5090:1742:38:-;5279:6;1744:1:20;2325:7;;:19;;2317:63;;;;-1:-1:-1;;;2317:63:20;;;;;;;:::i;:::-;1744:1;2455:7;:18;5297:15:38::1;5315:12;3415:8:36::0;;;3337:93;5315:12:38::1;5297:30:::0;-1:-1:-1;5415:10:38::1;-1:-1:-1::0;;;;;5437:10:38::1;5415:33;;:156:::0;::::1;;;;5564:7;5557:3;:14;5415:156;:245;;;;;5659:1;5649:6;5642:18;5415:245;5394:299;;;::::0;-1:-1:-1;;;5394:299:38;;31232:2:43;5394:299:38::1;::::0;::::1;31214:21:43::0;31271:1;31251:18;;;31244:29;-1:-1:-1;;;31289:18:43;;;31282:37;31336:18;;5394:299:38::1;31030:330:43::0;5394:299:38::1;5871:43;::::0;-1:-1:-1;;;5871:43:38;;5908:4:::1;5871:43;::::0;::::1;4209:51:43::0;5844:24:38::1;::::0;5871:10:::1;-1:-1:-1::0;;;;;5871:28:38::1;::::0;::::1;::::0;4182:18:43;;5871:43:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5957:45;::::0;-1:-1:-1;;;5957:45:38;;5996:4:::1;5957:45;::::0;::::1;4209:51:43::0;5844:70:38;;-1:-1:-1;5924:30:38::1;::::0;-1:-1:-1;;;;;5957:10:38::1;:30;::::0;::::1;::::0;4182:18:43;;5957:45:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5957:45:38::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;6033:10;::::0;::::1;::::0;5924:78;;-1:-1:-1;;;;;;;6033:18:38::1;::::0;:52;::::1;;;;6067:6;:13;6084:1;6067:18;6033:52;:232;;;;;6258:7;6101:153;6147:6;6154:1;6147:9;;;;;;;;:::i;:::-;;;;;;;:20;;;6185:6;6192:1;6185:9;;;;;;;;:::i;:::-;;;;;;;:18;;;6221:6;6228:1;6221:9;;;;;;;;:::i;:::-;;;;;;;:19;;;6101:28;:153::i;:::-;:164;6033:232;6012:263;;;::::0;::::1;;6409:21;6440:25:::0;6492:5:::1;-1:-1:-1::0;;;;;6479:18:38::1;:9;-1:-1:-1::0;;;;;6479:18:38::1;;6475:75;;;6510:5;;6499:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6499:16:38;;-1:-1:-1;6475:75:38::1;::::0;-1:-1:-1;;;6475:75:38::1;;6545:5;;6530:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;6530:20:38;;-1:-1:-1;;;;6475:75:38::1;6688:51;6694:5;6701:6;6709:8;6719:12;6733:5;6688;:51::i;:::-;-1:-1:-1::0;;1701:1:20;2628:7;:22;-1:-1:-1;;;;6809:16:38;5090:1742;-1:-1:-1;;;;;;;;;5090:1742:38:o;5895:311:36:-;5950:17;5969:26;5997:19;6029:18;6082:10;-1:-1:-1;;;;;6082:22:36;;6105:15;:13;:15::i;:::-;6082:39;;-1:-1:-1;;;;;;6082:39:36;;;;;;;10978:6:43;10966:19;;;6082:39:36;;;10948:38:43;10921:18;;6082:39:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6146:18:36;;6167:14;;;;6183:15;;;;;6146:18;;6167:14;;-1:-1:-1;6183:15:36;-1:-1:-1;5895:311:36;-1:-1:-1;;5895:311:36:o;6861:403:2:-;-1:-1:-1;;;;;6945:24:2;;929:10:7;6945:24:2;;6937:70;;;;-1:-1:-1;;;6937:70:2;;34486:2:43;6937:70:2;;;34468:21:43;34525:2;34505:18;;;34498:30;34564:34;34544:18;;;34537:62;-1:-1:-1;;;34615:18:43;;;34608:31;34656:19;;6937:70:2;34284:397:43;6937:70:2;-1:-1:-1;;;;;7022:27:2;;;;;;:17;:27;;;;;;;;7018:185;;;929:10:7;7065:38:2;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;7065:48:2;;;;;;;;;:55;;-1:-1:-1;;7065:55:2;7116:4;7065:55;;;7018:185;;;929:10:7;7158:24:2;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;7158:34:2;;;;;;;;;7151:41;;-1:-1:-1;;7151:41:2;;;7018:185;7218:39;;929:10:7;;-1:-1:-1;;;;;7218:39:2;;;;;;;;6861:403;:::o;8066:325::-;8247:36;929:10:7;8275:7:2;8247:13;:36::i;:::-;8239:93;;;;-1:-1:-1;;;8239:93:2;;;;;;;:::i;:::-;8342:42;8348:7;8357:6;8365:4;8371:12;8342:5;:42::i;5817:127::-;5900:37;929:10:7;5920:6:2;5928:4;5900:37;;;;;;;;;;;;:5;:37::i;:::-;5817:127;;:::o;1186:320:6:-;-1:-1:-1;;;;;1476:19:6;;:23;;;1186:320::o;498:697:37:-;561:7;649:17;669:15;:13;:15::i;:::-;924:55;;-1:-1:-1;;;924:55:37;;34888:6:43;34876:19;;924:55:37;;;34858:38:43;973:4:37;34912:18:43;;;34905:60;649:35:37;;-1:-1:-1;888:18:37;;-1:-1:-1;;;;;924:10:37;:28;;;;34831:18:43;;924:55:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1017:70:37;;-1:-1:-1;;;1017:70:37;;35507:6:43;35495:19;;1017:70:37;;;35477:38:43;35531:18;;;35524:34;;;1082:4:37;35574:18:43;;;35567:50;887:92:37;;-1:-1:-1;989:25:37;;-1:-1:-1;;;;;1017:10:37;:39;;;;35450:18:43;;1017:70:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;989:98;;1126:1;1105:18;:22;1097:46;;;;-1:-1:-1;;;1097:46:37;;35830:2:43;1097:46:37;;;35812:21:43;35869:2;35849:18;;;35842:30;-1:-1:-1;;;35888:18:43;;;35881:41;35939:18;;1097:46:37;35628:335:43;15543:373:2;-1:-1:-1;;;;;15674:20:2;;15666:70;;;;-1:-1:-1;;;15666:70:2;;36170:2:43;15666:70:2;;;36152:21:43;36209:2;36189:18;;;36182:30;36248:34;36228:18;;;36221:62;-1:-1:-1;;;36299:18:43;;;36292:35;36344:19;;15666:70:2;35968:401:43;15666:70:2;-1:-1:-1;;;;;15754:21:2;;15746:69;;;;-1:-1:-1;;;15746:69:2;;36576:2:43;15746:69:2;;;36558:21:43;36615:2;36595:18;;;36588:30;36654:34;36634:18;;;36627:62;-1:-1:-1;;;36705:18:43;;;36698:33;36748:19;;15746:69:2;36374:399:43;15746:69:2;-1:-1:-1;;;;;15826:19:2;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:36;;;15877:32;;160:25:43;;;15877:32:2;;133:18:43;15877:32:2;;;;;;;15543:373;;;:::o;2254:2606:38:-;1744:1:20;2325:7;;:19;;2317:63;;;;-1:-1:-1;;;2317:63:20;;;;;;;:::i;:::-;1744:1;2455:7;:18;2476:12:38::1;:10;:12::i;:::-;2475:13;2467:39;;;::::0;-1:-1:-1;;;2467:39:38;;36980:2:43;2467:39:38::1;::::0;::::1;36962:21:43::0;37019:2;36999:18;;;36992:30;-1:-1:-1;;;37038:18:43;;;37031:43;37091:18;;2467:39:38::1;36778:337:43::0;2467:39:38::1;2517:12;2531:10:::0;2545:23:::1;2554:13;2545:8;:23::i;:::-;2516:52;;;;2578:21;2602:5;:62;;2634:30;::::0;-1:-1:-1;;;2634:30:38;;2658:4:::1;2634:30;::::0;::::1;4209:51:43::0;-1:-1:-1;;;;;2634:15:38;::::1;::::0;::::1;::::0;4182:18:43;;2634:30:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2602:62;;;2610:21;2602:62;2578:86;;3344:5;3340:1270;;;3365:90;-1:-1:-1::0;;;;;3381:4:38::1;3365:40;3406:10;3426:4;3433:21:::0;3365:40:::1;:90::i;:::-;3469:36;::::0;-1:-1:-1;;;3469:36:38;;::::1;::::0;::::1;160:25:43::0;;;3469:4:38::1;-1:-1:-1::0;;;;;3469:13:38::1;::::0;::::1;::::0;133:18:43;;3469:36:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3520:39;3562:212;3611:15;:13;:15::i;:::-;3644:16;:14;:16::i;:::-;3678:21;3717:11;3746:14;3562:31;:212::i;:::-;3520:254;;3961:10;-1:-1:-1::0;;;;;3961:37:38::1;;4006:21;4037:4;4044:6;3961:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3351:711;3340:1270;;;4173:72;-1:-1:-1::0;;;;;4173:22:38;::::1;4196:10;4216:4;4223:21:::0;4173:22:::1;:72::i;:::-;4313:25;4341:201;4387:15;:13;:15::i;:::-;4420:16;:14;:16::i;:::-;4454:11;4483:14;4515:13;4341:28;:201::i;:::-;4556:43;::::0;-1:-1:-1;;;4556:43:38;;4313:229;;-1:-1:-1;;;;;;4556:10:38::1;:20;::::0;::::1;::::0;:43:::1;::::0;4585:4:::1;::::0;4313:229;;4556:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4068:542;3340:1270;4737:43;4743:8;4753:11;-1:-1:-1::0;;;;;4737:43:38::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;::::0;4774:5:::1;4737;:43::i;:::-;4791:62;4813:5;4820:10;4832:5;4839:13;4791:21;:62::i;:::-;-1:-1:-1::0;;1701:1:20;2628:7;:22;-1:-1:-1;;;;;;;2254:2606:38:o;1413:521:31:-;1552:4;1568:12;1583:36;1609:9;1583:25;:36::i;:::-;1568:51;;1629:19;1658:40;1683:14;1658:24;:40::i;:::-;1651:47;;:4;:47;:::i;:::-;1629:69;;1765:11;1754:8;:22;1750:40;;;1785:5;1778:12;;;;;;1750:40;1836:12;1852:51;1883:9;1894:8;1852:30;:51::i;:::-;1828:75;1413:521;-1:-1:-1;;;;;;;;1413:521:31:o;508:548:32:-;643:7;1988:6:30;670:38:32;;;662:47;;;;;;739:16;727:28;;;719:37;;;;;;1940:1:30;774:48:32;;;766:57;;;;;;-1:-1:-1;879:42:32;919:2;879:42;;;;942:39;980:1;942:39;;;;878:104;1009:25;;;878:157;508:548;;;;;:::o;328:703:29:-;384:13;601:10;597:51;;-1:-1:-1;;627:10:29;;;;;;;;;;;;-1:-1:-1;;;627:10:29;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:29;;-1:-1:-1;773:2:29;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;-1:-1:-1;;;;;817:17:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:29;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:29;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;902:56:29;;;;;;;;-1:-1:-1;972:11:29;981:2;972:11;;:::i;:::-;;;844:150;;;1017:6;328:703;-1:-1:-1;;;;328:703:29:o;2531:234:2:-;2952:13:0;;;;;;;2944:69;;;;-1:-1:-1;;;2944:69:0;;;;;;;:::i;:::-;2700:58:2::1;2724:5;2731:7;2740:17;2700:23;:58::i;1413:603:23:-:0;1768:10;;;1767:62;;-1:-1:-1;1784:39:23;;-1:-1:-1;;;1784:39:23;;1808:4;1784:39;;;41615:34:43;-1:-1:-1;;;;;41685:15:43;;;41665:18;;;41658:43;1784:15:23;;;;;41550:18:43;;1784:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1767:62;1746:163;;;;-1:-1:-1;;;1746:163:23;;41914:2:43;1746:163:23;;;41896:21:43;41953:2;41933:18;;;41926:30;41992:34;41972:18;;;41965:62;-1:-1:-1;;;42043:18:43;;;42036:52;42105:19;;1746:163:23;41712:418:43;1746:163:23;1946:62;;-1:-1:-1;;;;;12867:32:43;;1946:62:23;;;12849:51:43;12916:18;;;12909:34;;;1919:90:23;;1939:5;;-1:-1:-1;;;1969:22:23;12822:18:43;;1946:62:23;;;;-1:-1:-1;;1946:62:23;;;;;;;;;;;;;;-1:-1:-1;;;;;1946:62:23;-1:-1:-1;;;;;;1946:62:23;;;;;;;;;;1919:19;:90::i;16389:483:2:-;16620:78;;-1:-1:-1;;;16620:78:2;;-1:-1:-1;;;;;12867:32:43;;16620:78:2;;;12849:51:43;1706:31:2;12916:18:43;;;12909:34;16598:19:2;;1457:42;;16620:41;;12822:18:43;;16620:78:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16598:100;-1:-1:-1;;;;;;16712:25:2;;;16708:158;;16753:102;;-1:-1:-1;;;16753:102:2;;-1:-1:-1;;;;;16753:50:2;;;;;:102;;16804:8;;16814:4;;16820:2;;16824:6;;16832:8;;16842:12;;16753:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16708:158;16588:284;16389:483;;;;;;:::o;18525:442::-;-1:-1:-1;;;;;8746:19:2;;;18655:24;8746:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;18721:37:2;;18717:244;;18802:6;18782:16;:26;;18774:69;;;;-1:-1:-1;;;18774:69:2;;43888:2:43;18774:69:2;;;43870:21:43;43927:2;43907:18;;;43900:30;43966:32;43946:18;;;43939:60;44016:18;;18774:69:2;43686:354:43;18774:69:2;18885:51;18894:5;18901:7;18929:6;18910:16;:25;18885:8;:51::i;14794:611::-;-1:-1:-1;;;;;15072:15:2;;15050:19;15072:15;;;:9;:15;;;;;;15105:21;;;;15097:73;;;;-1:-1:-1;;;15097:73:2;;44247:2:43;15097:73:2;;;44229:21:43;44286:2;44266:18;;;44259:30;44325:34;44305:18;;;44298:62;-1:-1:-1;;;44376:18:43;;;44369:37;44423:19;;15097:73:2;44045:403:43;15097:73:2;-1:-1:-1;;;;;15204:15:2;;;;;;;:9;:15;;;;;;15222:20;;;15204:38;;15262:13;;;;;;;;:23;;15236:6;;15204:15;15262:23;;15236:6;;15262:23;:::i;:::-;;;;;;;;15322:2;-1:-1:-1;;;;;15301:56:2;15316:4;-1:-1:-1;;;;;15301:56:2;15306:8;-1:-1:-1;;;;;15301:56:2;;15326:6;15334:8;15344:12;15301:56;;;;;;;;:::i;:::-;;;;;;;;15387:2;-1:-1:-1;;;;;15372:26:2;15381:4;-1:-1:-1;;;;;15372:26:2;;15391:6;15372:26;;;;160:25:43;;148:2;133:18;;14:177;15372:26:2;;;;;;;;14981:424;14794:611;;;;;;:::o;17561:687::-;17828:79;;-1:-1:-1;;;17828:79:2;;-1:-1:-1;;;;;12867:32:43;;17828:79:2;;;12849:51:43;1803:34:2;12916:18:43;;;12909:34;17806:19:2;;1457:42;;17828:41;;12822:18:43;;17828:79:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17806:101;-1:-1:-1;;;;;;17921:25:2;;;17917:325;;17962:107;;-1:-1:-1;;;17962:107:2;;-1:-1:-1;;;;;17962:55:2;;;;;:107;;18018:8;;18028:4;;18034:2;;18038:6;;18046:8;;18056:12;;17962:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17917:325;;;18090:19;18086:156;;;-1:-1:-1;;;;;18134:13:2;;1476:19:6;:23;18125:106:2;;;;-1:-1:-1;;;18125:106:2;;45110:2:43;18125:106:2;;;45092:21:43;45149:2;45129:18;;;45122:30;45188:34;45168:18;;;45161:62;45259:34;45239:18;;;45232:62;-1:-1:-1;;;45310:19:43;;;45303:44;45364:19;;18125:106:2;44908:481:43;18125:106:2;17796:452;17561:687;;;;;;;:::o;13022:650::-;-1:-1:-1;;;;;13244:18:2;;13236:65;;;;-1:-1:-1;;;13236:65:2;;45596:2:43;13236:65:2;;;45578:21:43;45635:2;45615:18;;;45608:30;45674:34;45654:18;;;45647:62;-1:-1:-1;;;45725:18:43;;;45718:32;45767:19;;13236:65:2;45394:398:43;13236:65:2;-1:-1:-1;;;;;13319:16:2;;13311:61;;;;-1:-1:-1;;;13311:61:2;;45999:2:43;13311:61:2;;;45981:21:43;;;46018:18;;;46011:30;46077:34;46057:18;;;46050:62;46129:18;;13311:61:2;45797:356:43;13311:61:2;929:10:7;13425:69:2;929:10:7;13453:4:2;13459:2;13463:6;13471:8;13481:12;13425:17;:69::i;:::-;13505:57;13511:8;13521:4;13527:2;13531:6;13539:8;13549:12;13505:5;:57::i;:::-;13573:92;13593:8;13603:4;13609:2;13613:6;13621:8;13631:12;13645:19;13573;:92::i;12972:145:38:-;13027:6;-1:-1:-1;;;;;13053:30:38;;;13045:39;;;;;;-1:-1:-1;13108:1:38;12972:145::o;8777:437:37:-;8947:177;;;;;;;;8996:4;8947:177;;8899:21;8947:177;;;;;;;-1:-1:-1;;;;;8947:177:37;;;;;;;;;;;;8923:211;;8899:21;;8923:211;;8947:177;8923:211;;:::i;:::-;;;;-1:-1:-1;;8923:211:37;;;;;;;9173:34;;;;;-1:-1:-1;9173:34:37;;8923:211;-1:-1:-1;9173:34:37;;9179:5;;9186:6;;8923:211;;9173:5;:34::i;2170:822:31:-;2308:7;2317:4;2358:1;2341:14;:18;2333:52;;;;-1:-1:-1;;;2333:52:31;;46360:2:43;2333:52:31;;;46342:21:43;46399:2;46379:18;;;46372:30;-1:-1:-1;;;46418:18:43;;;46411:51;46479:18;;2333:52:31;46158:345:43;2333:52:31;585:1:30;2403:14:31;:51;;2395:86;;;;-1:-1:-1;;;2395:86:31;;46710:2:43;2395:86:31;;;46692:21:43;46749:2;46729:18;;;46722:30;-1:-1:-1;;;46768:18:43;;;46761:52;46830:18;;2395:86:31;46508:346:43;2395:86:31;2491:12;2506:36;2532:9;2506:25;:36::i;:::-;2491:51;-1:-1:-1;2570:1:31;2553:393;2578:14;2573:1;:19;2553:393;;2613:22;2645:27;2670:1;2645:24;:27::i;:::-;2638:34;;:4;:34;:::i;:::-;2613:59;;2767:8;2749:14;:26;2745:49;;;-1:-1:-1;2785:1:31;-1:-1:-1;2788:5:31;;-1:-1:-1;2777:17:31;;-1:-1:-1;2777:17:31;2745:49;2909:8;2892:14;:25;2888:47;;;-1:-1:-1;2927:1:31;-1:-1:-1;2930:4:31;;-1:-1:-1;2919:16:31;;-1:-1:-1;2919:16:31;2888:47;-1:-1:-1;2594:3:31;;;;:::i;:::-;;;;2553:393;;;-1:-1:-1;2956:29:31;;-1:-1:-1;;;2956:29:31;;47061:2:43;2956:29:31;;;47043:21:43;47100:2;47080:18;;;47073:30;-1:-1:-1;;;47119:18:43;;;47112:49;47178:18;;2956:29:31;46859:343:43;2170:822:31;;;;;;;:::o;11820:726:2:-;-1:-1:-1;;;;;12025:21:2;;12017:66;;;;-1:-1:-1;;;12017:66:2;;47409:2:43;12017:66:2;;;47391:21:43;;;47428:18;;;47421:30;47487:34;47467:18;;;47460:62;47539:18;;12017:66:2;47207:356:43;12017:66:2;12094:16;929:10:7;12094:31:2;;12256:6;12240:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;12272:18:2;;;;;;:9;:18;;;;;:28;;12294:6;;12272:18;:28;;12294:6;;12272:28;:::i;:::-;;;;-1:-1:-1;12311:103:2;;-1:-1:-1;12331:8:2;12349:1;12353:7;12362:6;12370:8;12380:12;12394:19;12311;:103::i;:::-;12447:7;-1:-1:-1;;;;;12430:57:2;12437:8;-1:-1:-1;;;;;12430:57:2;;12456:6;12464:8;12474:12;12430:57;;;;;;;;:::i;:::-;;;;;;;;12502:37;;160:25:43;;;-1:-1:-1;;;;;12502:37:2;;;12519:1;;12502:37;;148:2:43;133:18;12502:37:2;;;;;;;;12007:539;11820:726;;;;;:::o;8335:2521:38:-;1744:1:20;2325:7;;:19;;2317:63;;;;-1:-1:-1;;;2317:63:20;;;;;;;:::i;:::-;1744:1;2455:7;:18;8597:26:38::1;8626:13;4403:12:2::0;;;4277:145;8626:13:38::1;8597:42;;8649:22;8685:8;8674:34;;;;;;;;;;;;:::i;:::-;8726:13;::::0;::::1;::::0;8649:59;;-1:-1:-1;;;;;;8726:27:38::1;8718:64;;;::::0;-1:-1:-1;;;8718:64:38;;48678:2:43;8718:64:38::1;::::0;::::1;48660:21:43::0;48717:2;48697:18;;;48690:30;48756:26;48736:18;;;48729:54;48800:18;;8718:64:38::1;48476:348:43::0;8718:64:38::1;8943:49;8955:4;8961:6;8969:8;8979:12;8943:11;:49::i;:::-;9007:12;:10;:12::i;:::-;9003:1847;;;9275:39;::::0;-1:-1:-1;;;9275:39:38;;9308:4:::1;9275:39;::::0;::::1;4209:51:43::0;9275:10:38::1;-1:-1:-1::0;;;;;9275:24:38::1;::::0;::::1;::::0;4182:18:43;;9275:39:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9328:17;9348:15;:13;:15::i;:::-;9415:55;::::0;-1:-1:-1;;;9415:55:38;;34888:6:43;34876:19;;9415:55:38::1;::::0;::::1;34858:38:43::0;9464:4:38::1;34912:18:43::0;;;34905:60;9328:35:38;;-1:-1:-1;9379:18:38::1;::::0;-1:-1:-1;;;;;9415:10:38::1;:28;::::0;::::1;::::0;34831:18:43;;9415:55:38::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9378:92;;;;9496:11;9492:1;:15;9484:49;;;::::0;-1:-1:-1;;;9484:49:38;;49031:2:43;9484:49:38::1;::::0;::::1;49013:21:43::0;49070:2;49050:18;;;49043:30;-1:-1:-1;;;49089:18:43;;;49082:51;49150:18;;9484:49:38::1;48829:345:43::0;9484:49:38::1;9627:30;9694:18:::0;9661:29:::1;9684:6:::0;9669:11;9661:29:::1;:::i;:::-;9660:52;;;;:::i;:::-;9627:85;;9790:189;9830:10;9858:4;:13;;;9889:35;9901:22;9889:11;:35::i;:::-;9942:23:::0;;9790:22:::1;:189::i;:::-;;9021:969;;;9003:1847;;;10000:4;:18;;;9996:854;;;10364:10;-1:-1:-1::0;;;;;10364:27:38::1;;10417:4;10470;:13;;;10528:12;3415:8:36::0;;;3337:93;10528:12:38::1;10578:6;10629:8;10364:287;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;9996:854;10682:157;10710:4;:13;;;10741:6;10765:4;:23;;;10806:4;:19;;;10682:10;:157::i;:::-;;9996:854;-1:-1:-1::0;;1701:1:20;2628:7;:22;-1:-1:-1;;;;8335:2521:38:o;912:241:23:-;1077:68;;-1:-1:-1;;;;;50003:15:43;;;1077:68:23;;;49985:34:43;50055:15;;50035:18;;;50028:43;50087:18;;;50080:34;;;1050:96:23;;1070:5;;-1:-1:-1;;;1100:27:23;49920:18:43;;1077:68:23;49745:375:43;1718:867:32;1987:32;;;2017:1;1987:32;;;;;;;;;1927:39;;1987:32;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1978:41;;2052:35;2029:6;2036:1;2029:9;;;;;;;;:::i;:::-;;;;;;;:20;;:58;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;2120:10;2097:6;2104:1;2097:9;;;;;;;;:::i;:::-;;;;;;;:20;;:33;;;;;;;;;;;2172:21;2140:6;2147:1;2140:9;;;;;;;;:::i;:::-;;;;;;;:29;;:53;;;;;2241:4;2203:6;2210:1;2203:9;;;;;;;;:::i;:::-;;;;;;;:35;;:42;;;;;;;;;;;2286:4;2255:6;2262:1;2255:9;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:28;;;;:35;2319:16;;;2333:1;2319:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2319:16:32;2300:6;2307:1;2300:9;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:35;-1:-1:-1;;;2564:3:32;2537:30;;;;-1:-1:-1;;;;;;;2517:3:32;2493:27;;;;-1:-1:-1;;;2473:3:32;2449:27;;;;2429:3;2403:20;2397:27;2389:36;;:43;;2388:89;:133;:180;2367:211;;2345:6;2352:1;2345:9;;;;;;;;:::i;:::-;;;;;;;:16;;;2362:1;2345:19;;;;;;;;:::i;:::-;;;;;;:233;;;;;1718:867;;;;;;;:::o;1062:650::-;1303:18;;;1319:1;1303:18;;;;;;;;;1257:25;;1303:18;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;1303:18:32;;;;;;;;;;;;;;;1294:27;;1354:10;1331:6;1338:1;1331:9;;;;;;;;:::i;:::-;;;;;;;:20;;:33;;;;;;;;;;;1404:13;1374:6;1381:1;1374:9;;;;;;;;:::i;:::-;;;;;;;;;;;;:43;;;:27;;:43;1446:16;;;1460:1;1446:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1446:16:32;1427:6;1434:1;1427:9;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:35;1472:9;;1600:3;1576:27;;;-1:-1:-1;;;1576:27:32;1644:3;1620:27;;;-1:-1:-1;;;;;;;1620:27:32;1515:133;1691:3;1664:30;;;-1:-1:-1;;;1664:30:32;1515:180;;1472:6;;1530:20;;1472:9;;;;:::i;:::-;;;;;;;:16;;;1489:1;1472:19;;;;;;;;:::i;12385:581:38:-;12538:25;12575:20;12598:5;:62;;12630:30;;-1:-1:-1;;;12630:30:38;;12654:4;12630:30;;;4209:51:43;-1:-1:-1;;;;;12630:15:38;;;;;4182:18:43;;12630:30:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12598:62;;;12606:21;12598:62;12575:85;-1:-1:-1;12690:28:38;12705:13;12575:85;12690:28;:::i;:::-;12670:48;;12733:5;12729:231;;;12754:4;-1:-1:-1;;;;;12754:12:38;;12774:17;12754:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12808:63:38;;-1:-1:-1;;;;;;;12823:4:38;12808:34;;-1:-1:-1;12843:8:38;;-1:-1:-1;12853:17:38;12808:34;:63::i;:::-;12729:231;;;12902:47;-1:-1:-1;;;;;12902:18:38;;12921:8;12931:17;12902:18;:47::i;:::-;12565:401;12385:581;;;;;;:::o;226:193:31:-;294:7;839::30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;321::31;:30;;313:39;;;;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;382:29:31;;:9;:29;:::i;:::-;369:43;;:9;:43;:::i;824:470::-;887:7;910:5;919:1;910:10;906:40;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;906:40:31:-;960:5;969:1;960:10;956:44;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;979:21:31;;:1;:21;:::i;956:44::-;1014:5;1023:1;1014:10;1010:37;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;1010:37:31:-;1061:5;1070:1;1061:10;1057:41;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;1057:41:31:-;1112:5;1121:1;1112:10;1108:41;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;:::-;1131:18:31;;:1;:18;:::i;1108:41::-;1163:5;1172:1;1163:10;1159:42;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;:::-;1182:19:31;;:2;:19;:::i;1159:42::-;1215:5;1224:1;1215:10;1211:42;;;839:7:30;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;984:11;;994:1;984:11;:::i;:::-;1234:19:31;;:2;:19;:::i;1211:42::-;1264:23;;-1:-1:-1;;;1264:23:31;;50327:2:43;1264:23:31;;;50309:21:43;50366:2;50346:18;;;50339:30;-1:-1:-1;;;50385:18:43;;;50378:43;50438:18;;1264:23:31;50125:337:43;3208:2699:31;3323:7;3332:4;3352:21;3376:22;3388:9;3376:11;:22::i;:::-;3352:46;-1:-1:-1;3466:24:31;718:5:30;3466:8:31;:24;:::i;:::-;:29;3462:52;;3505:1;3508:5;3497:17;;;;;;;3462:52;3587:8;3570:13;:25;3566:48;;3605:1;3608:5;3597:17;;;;;;;3566:48;3717:18;718:5:30;3739:24:31;3750:13;3739:8;:24;:::i;:::-;3738:42;;;;:::i;:::-;3717:63;;1299:2:30;3863:10:31;:38;3859:1887;;3925:10;-1:-1:-1;3937:4:31;;-1:-1:-1;3917:25:31;;-1:-1:-1;3917:25:31;3859:1887;1351:3:30;3963:10:31;:39;3959:1787;;4275:20;718:5:30;839:7;718:5;845:1;839:7;:::i;:::-;4395:30:31;;:13;:30;:::i;:::-;4394:68;;;;:::i;:::-;4314:57;1299:2:30;4314:10:31;:57;:::i;:::-;:148;;;;:::i;:::-;4275:187;-1:-1:-1;4711:37:31;1091:1:30;4275:187:31;4711:37;:::i;:::-;4683:65;;1572:2:30;4683:65:31;:::i;:::-;4767:37;1091:1:30;4767:12:31;:37;:::i;:::-;4809:1;4766:44;4489:335;;;;;;;;;3959:1787;1405:4:30;4845:10:31;:40;4841:905;;4901:20;718:5:30;839:7;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;5022:31:31;;:13;:31;:::i;:::-;5021:69;;;;:::i;:::-;4940:58;1351:3:30;4940:10:31;:58;:::i;:::-;:150;;;;:::i;:::-;4901:189;-1:-1:-1;5159:38:31;1140:2:30;4901:189:31;5159:38;:::i;:::-;5130:67;;1625:3:30;5130:67:31;:::i;:::-;5216:38;1140:2:30;5216:12:31;:38;:::i;4841:905::-;1462:4:30;5295:10:31;:42;5291:455;;5353:20;718:5:30;839:7;718:5;845:1;839:7;:::i;:::-;886:8;;893:1;886:8;:::i;:::-;936:9;;944:1;936:9;:::i;:::-;5475:33:31;;:13;:33;:::i;:::-;5474:71;;;;:::i;:::-;5392:59;1405:4:30;5392:10:31;:59;:::i;:::-;:153;;;;:::i;:::-;5353:192;-1:-1:-1;5616:40:31;1192:2:30;5353:192:31;5616:40;:::i;:::-;5585:71;;1681:3:30;5585:71:31;:::i;:::-;5675:40;1192:2:30;5675:12:31;:40;:::i;5291:455::-;5889:3;5894:5;5881:19;;;;;;3208:2699;;;;;;:::o;2771:659:2:-;2952:13:0;;;;;;;2944:69;;;;-1:-1:-1;;;2944:69:0;;;;;;;:::i;:::-;2950:13:2;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2973:17:2;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;3001:42:2;;::::1;::::0;:22:::1;::::0;:42:::1;::::0;::::1;::::0;::::1;:::i;:::-;;3058:9;3053:126;3077:17;:24;3073:1;:28;3053:126;;;3164:4;3122:17;:39;3140:17;3158:1;3140:20;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;3122:39:2::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;3122:39:2;:46;;-1:-1:-1;;3122:46:2::1;::::0;::::1;;::::0;;;::::1;::::0;;3103:3;::::1;::::0;::::1;:::i;:::-;;;;3053:126;;;-1:-1:-1::0;3220:97:2::1;::::0;-1:-1:-1;;;3220:97:2;;3270:4:::1;3220:97;::::0;::::1;50707:34:43::0;;;3277:24:2::1;50757:18:43::0;;;50750:34;50800:18;;;50793:43;1457:42:2::1;::::0;3220:41:::1;::::0;50642:18:43;;3220:97:2::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3327:96:2::1;::::0;-1:-1:-1;;;3327:96:2;;3377:4:::1;3327:96;::::0;::::1;50707:34:43::0;;;3384:23:2::1;50757:18:43::0;;;50750:34;50800:18;;;50793:43;1457:42:2::1;::::0;-1:-1:-1;3327:41:2::1;::::0;-1:-1:-1;50642:18:43;;3327:96:2::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3207:706:23::0;3626:23;3652:69;3680:4;3652:69;;;;;;;;;;;;;;;;;3660:5;-1:-1:-1;;;;;3652:27:23;;;:69;;;;;:::i;:::-;3735:17;;3626:95;;-1:-1:-1;3735:21:23;3731:176;;3830:10;3819:30;;;;;;;;;;;;:::i;:::-;3811:85;;;;-1:-1:-1;;;3811:85:23;;51299:2:43;3811:85:23;;;51281:21:43;51338:2;51318:18;;;51311:30;51377:34;51357:18;;;51350:62;-1:-1:-1;;;51428:18:43;;;51421:40;51478:19;;3811:85:23;51097:406:43;13977:811:2;-1:-1:-1;;;;;14141:18:2;;14133:65;;;;-1:-1:-1;;;14133:65:2;;51710:2:43;14133:65:2;;;51692:21:43;51749:2;51729:18;;;51722:30;51788:34;51768:18;;;51761:62;-1:-1:-1;;;51839:18:43;;;51832:32;51881:19;;14133:65:2;51508:398:43;14133:65:2;929:10:7;14251:73:2;929:10:7;14279:4:2;14209:16;14297:6;14305:4;14311:12;14251:17;:73::i;:::-;-1:-1:-1;;;;;14458:15:2;;14436:19;14458:15;;;:9;:15;;;;;;14491:21;;;;14483:69;;;;-1:-1:-1;;;14483:69:2;;52113:2:43;14483:69:2;;;52095:21:43;52152:2;52132:18;;;52125:30;52191:34;52171:18;;;52164:62;-1:-1:-1;;;52242:18:43;;;52235:33;52285:19;;14483:69:2;51911:399:43;14483:69:2;-1:-1:-1;;;;;14586:15:2;;;;;;:9;:15;;;;;14604:20;;;14586:38;;14644:12;:22;;14618:6;;14586:15;14644:22;;14618:6;;14644:22;:::i;:::-;;;;;;;;14699:4;-1:-1:-1;;;;;14682:50:2;14689:8;-1:-1:-1;;;;;14682:50:2;;14705:6;14713:4;14719:12;14682:50;;;;;;;;:::i;:::-;;;;;;;;14747:34;;160:25:43;;;14770:1:2;;-1:-1:-1;;;;;14747:34:2;;;;;148:2:43;133:18;14747:34:2;14:177:43;10924:536:38;11098:25;11136:12;11150:10;11164:22;11173:12;11164:8;:22::i;:::-;11135:51;;;;11196:21;11220:5;:62;;11252:30;;-1:-1:-1;;;11252:30:38;;11276:4;11252:30;;;4209:51:43;-1:-1:-1;;;;;11252:15:38;;;;;4182:18:43;;11252:30:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11220:62;;;11228:21;11220:62;11293:69;;-1:-1:-1;;;11293:69:38;;52537:6:43;52525:19;;11293:69:38;;;52507:38:43;-1:-1:-1;;;;;52581:37:43;;52561:18;;;52554:65;52662:14;;52655:22;52635:18;;;52628:50;11196:86:38;;-1:-1:-1;11293:10:38;-1:-1:-1;;;;;11293:19:38;;;;52480:18:43;;11293:69:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11393:60;11415:5;11422:8;11432:5;11439:13;11393:21;:60::i;11525:854::-;11681:25;11719:12;11733:10;11747:22;11756:12;11747:8;:22::i;:::-;11718:51;;;;11779:21;11803:5;:62;;11835:30;;-1:-1:-1;;;11835:30:38;;11859:4;11835:30;;;4209:51:43;-1:-1:-1;;;;;11835:15:38;;;;;4182:18:43;;11835:30:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11803:62;;;11811:21;11803:62;11779:86;;11931:39;11973:191;12017:15;:13;:15::i;:::-;12046:16;:14;:16::i;:::-;12076:24;12088:11;12076;:24::i;:::-;12114:14;12142:12;11973:30;:191::i;:::-;12174:60;;-1:-1:-1;;;12174:60:38;;11931:233;;-1:-1:-1;;;;;;12174:10:38;:37;;;;:60;;12220:4;;11931:233;;12174:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12312;12334:5;12341:8;12351:5;12358:13;12312:21;:60::i;:::-;12292:80;11525:854;-1:-1:-1;;;;;;;;;11525:854:38:o;701:205:23:-;840:58;;-1:-1:-1;;;;;12867:32:43;;840:58:23;;;12849:51:43;12916:18;;;12909:34;;;813:86:23;;833:5;;-1:-1:-1;;;863:23:23;12822:18:43;;840:58:23;12662:287:43;479:160:31;537:7;718:5:30;564:4:31;:21;;556:30;;;;;;611:20;718:5:30;611:4:31;:20;:::i;3861:223:25:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;2591:788:32:-;2847:32;;;2877:1;2847:32;;;;;;;;;2787:39;;2847:32;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2838:41;;2912:22;2889:6;2896:1;2889:9;;;;;;;;:::i;:::-;;;;;;;:20;;:45;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;2967:10;2944:6;2951:1;2944:9;;;;;;;;:::i;:::-;;;;;;;:20;;:33;;;;;;;;;;;3025:4;2987:6;2994:1;2987:9;;;;;;;;:::i;:::-;;;;;;;:35;;:42;;;;;;;;;;;3070:12;3039:6;3046:1;3039:9;;;;;;;;:::i;:::-;;;;;;;;;;;:43;;;:28;;;;:43;3111:16;;;3125:1;3111:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3111:16:32;3092:6;3099:1;3092:9;;;;;;;;:::i;:::-;;;;;;;;;;;:16;;:35;-1:-1:-1;;;3358:3:32;3331:30;;;;-1:-1:-1;;;;;;;3311:3:32;3287:27;;;;-1:-1:-1;;;3267:3:32;3243:27;;;;3223:3;3195:22;3189:29;;4948:499:25;5113:12;5170:5;5145:21;:30;;5137:81;;;;-1:-1:-1;;;5137:81:25;;52891:2:43;5137:81:25;;;52873:21:43;52930:2;52910:18;;;52903:30;52969:34;52949:18;;;52942:62;-1:-1:-1;;;53020:18:43;;;53013:36;53066:19;;5137:81:25;52689:402:43;5137:81:25;-1:-1:-1;;;;;1476:19:6;;;5228:60:25;;;;-1:-1:-1;;;5228:60:25;;53298:2:43;5228:60:25;;;53280:21:43;53337:2;53317:18;;;53310:30;53376:31;53356:18;;;53349:59;53425:18;;5228:60:25;53096:353:43;5228:60:25;5300:12;5314:23;5341:6;-1:-1:-1;;;;;5341:11:25;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;4948:499;-1:-1:-1;;;;;;;4948:499:25:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:25;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:25;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:658:43;367:2;419:21;;;489:13;;392:18;;;511:22;;;338:4;;367:2;590:15;;;;564:2;549:18;;;338:4;633:195;647:6;644:1;641:13;633:195;;;712:13;;-1:-1:-1;;;;;708:39:43;696:52;;803:15;;;;768:12;;;;744:1;662:9;633:195;;;-1:-1:-1;845:3:43;;196:658;-1:-1:-1;;;;;;196:658:43:o;859:258::-;931:1;941:113;955:6;952:1;949:13;941:113;;;1031:11;;;1025:18;1012:11;;;1005:39;977:2;970:10;941:113;;;1072:6;1069:1;1066:13;1063:48;;;-1:-1:-1;;1107:1:43;1089:16;;1082:27;859:258::o;1122:::-;1164:3;1202:5;1196:12;1229:6;1224:3;1217:19;1245:63;1301:6;1294:4;1289:3;1285:14;1278:4;1271:5;1267:16;1245:63;:::i;:::-;1362:2;1341:15;-1:-1:-1;;1337:29:43;1328:39;;;;1369:4;1324:50;;1122:258;-1:-1:-1;;1122:258:43:o;1385:220::-;1534:2;1523:9;1516:21;1497:4;1554:45;1595:2;1584:9;1580:18;1572:6;1554:45;:::i;1610:180::-;1669:6;1722:2;1710:9;1701:7;1697:23;1693:32;1690:52;;;1738:1;1735;1728:12;1690:52;-1:-1:-1;1761:23:43;;1610:180;-1:-1:-1;1610:180:43:o;1795:131::-;-1:-1:-1;;;;;1870:31:43;;1860:42;;1850:70;;1916:1;1913;1906:12;1850:70;1795:131;:::o;1931:315::-;1999:6;2007;2060:2;2048:9;2039:7;2035:23;2031:32;2028:52;;;2076:1;2073;2066:12;2028:52;2115:9;2102:23;2134:31;2159:5;2134:31;:::i;:::-;2184:5;2236:2;2221:18;;;;2208:32;;-1:-1:-1;;;1931:315:43:o;2539:135::-;-1:-1:-1;;;;;2617:5:43;2613:36;2606:5;2603:47;2593:75;;2664:1;2661;2654:12;2679:121;2764:10;2757:5;2753:22;2746:5;2743:33;2733:61;;2790:1;2787;2780:12;2805:594;2889:6;2897;2905;2913;2966:3;2954:9;2945:7;2941:23;2937:33;2934:53;;;2983:1;2980;2973:12;2934:53;3019:9;3006:23;2996:33;;3079:2;3068:9;3064:18;3051:32;3092:30;3116:5;3092:30;:::i;:::-;3141:5;-1:-1:-1;3198:2:43;3183:18;;3170:32;3211:33;3170:32;3211:33;:::i;:::-;3263:7;-1:-1:-1;3322:2:43;3307:18;;3294:32;3335;3294;3335;:::i;:::-;2805:594;;;;-1:-1:-1;2805:594:43;;-1:-1:-1;;2805:594:43:o;3404:117::-;3489:6;3482:5;3478:18;3471:5;3468:29;3458:57;;3511:1;3508;3501:12;3526:123;3611:12;3604:5;3600:24;3593:5;3590:35;3580:63;;3639:1;3636;3629:12;3654:384;3720:6;3728;3781:2;3769:9;3760:7;3756:23;3752:32;3749:52;;;3797:1;3794;3787:12;3749:52;3836:9;3823:23;3855:30;3879:5;3855:30;:::i;:::-;3904:5;-1:-1:-1;3961:2:43;3946:18;;3933:32;3974;3933;3974;:::i;:::-;4025:7;4015:17;;;3654:384;;;;;:::o;4271:456::-;4348:6;4356;4364;4417:2;4405:9;4396:7;4392:23;4388:32;4385:52;;;4433:1;4430;4423:12;4385:52;4472:9;4459:23;4491:31;4516:5;4491:31;:::i;:::-;4541:5;-1:-1:-1;4598:2:43;4583:18;;4570:32;4611:33;4570:32;4611:33;:::i;:::-;4271:456;;4663:7;;-1:-1:-1;;;4717:2:43;4702:18;;;;4689:32;;4271:456::o;5129:454::-;5205:6;5213;5221;5274:2;5262:9;5253:7;5249:23;5245:32;5242:52;;;5290:1;5287;5280:12;5242:52;5326:9;5313:23;5303:33;;5386:2;5375:9;5371:18;5358:32;5399:31;5424:5;5399:31;:::i;:::-;5449:5;-1:-1:-1;5506:2:43;5491:18;;5478:32;5519;5478;5519;:::i;:::-;5570:7;5560:17;;;5129:454;;;;;:::o;5588:247::-;5647:6;5700:2;5688:9;5679:7;5675:23;5671:32;5668:52;;;5716:1;5713;5706:12;5668:52;5755:9;5742:23;5774:31;5799:5;5774:31;:::i;6121:118::-;6207:5;6200:13;6193:21;6186:5;6183:32;6173:60;;6229:1;6226;6219:12;6244:241;6300:6;6353:2;6341:9;6332:7;6328:23;6324:32;6321:52;;;6369:1;6366;6359:12;6321:52;6408:9;6395:23;6427:28;6449:5;6427:28;:::i;6794:127::-;6855:10;6850:3;6846:20;6843:1;6836:31;6886:4;6883:1;6876:15;6910:4;6907:1;6900:15;6926:255;6998:2;6992:9;7040:6;7028:19;;-1:-1:-1;;;;;7062:34:43;;7098:22;;;7059:62;7056:88;;;7124:18;;:::i;:::-;7160:2;7153:22;6926:255;:::o;7186:253::-;7258:2;7252:9;7300:4;7288:17;;-1:-1:-1;;;;;7320:34:43;;7356:22;;;7317:62;7314:88;;;7382:18;;:::i;7444:275::-;7515:2;7509:9;7580:2;7561:13;;-1:-1:-1;;7557:27:43;7545:40;;-1:-1:-1;;;;;7600:34:43;;7636:22;;;7597:62;7594:88;;;7662:18;;:::i;:::-;7698:2;7691:22;7444:275;;-1:-1:-1;7444:275:43:o;7724:186::-;7772:4;-1:-1:-1;;;;;7797:6:43;7794:30;7791:56;;;7827:18;;:::i;:::-;-1:-1:-1;7893:2:43;7872:15;-1:-1:-1;;7868:29:43;7899:4;7864:40;;7724:186::o;7915:462::-;7957:5;8010:3;8003:4;7995:6;7991:17;7987:27;7977:55;;8028:1;8025;8018:12;7977:55;8064:6;8051:20;8095:48;8111:31;8139:2;8111:31;:::i;:::-;8095:48;:::i;:::-;8168:2;8159:7;8152:19;8214:3;8207:4;8202:2;8194:6;8190:15;8186:26;8183:35;8180:55;;;8231:1;8228;8221:12;8180:55;8296:2;8289:4;8281:6;8277:17;8270:4;8261:7;8257:18;8244:55;8344:1;8319:16;;;8337:4;8315:27;8308:38;;;;8323:7;7915:462;-1:-1:-1;;;7915:462:43:o;8382:885::-;8495:6;8503;8511;8519;8527;8580:3;8568:9;8559:7;8555:23;8551:33;8548:53;;;8597:1;8594;8587:12;8548:53;8636:9;8623:23;8655:31;8680:5;8655:31;:::i;:::-;8705:5;-1:-1:-1;8762:2:43;8747:18;;8734:32;8775:33;8734:32;8775:33;:::i;:::-;8827:7;-1:-1:-1;8881:2:43;8866:18;;8853:32;;-1:-1:-1;8936:2:43;8921:18;;8908:32;-1:-1:-1;;;;;8989:14:43;;;8986:34;;;9016:1;9013;9006:12;8986:34;9039:49;9080:7;9071:6;9060:9;9056:22;9039:49;:::i;:::-;9029:59;;9141:3;9130:9;9126:19;9113:33;9097:49;;9171:2;9161:8;9158:16;9155:36;;;9187:1;9184;9177:12;9155:36;;9210:51;9253:7;9242:8;9231:9;9227:24;9210:51;:::i;:::-;9200:61;;;8382:885;;;;;;;;:::o;9272:315::-;9340:6;9348;9401:2;9389:9;9380:7;9376:23;9372:32;9369:52;;;9417:1;9414;9407:12;9369:52;9453:9;9440:23;9430:33;;9513:2;9502:9;9498:18;9485:32;9526:31;9551:5;9526:31;:::i;9592:523::-;9678:6;9686;9694;9747:2;9735:9;9726:7;9722:23;9718:32;9715:52;;;9763:1;9760;9753:12;9715:52;9802:9;9789:23;9821:31;9846:5;9821:31;:::i;:::-;9871:5;-1:-1:-1;9923:2:43;9908:18;;9895:32;;-1:-1:-1;9978:2:43;9963:18;;9950:32;-1:-1:-1;;;;;9994:30:43;;9991:50;;;10037:1;10034;10027:12;9991:50;10060:49;10101:7;10092:6;10081:9;10077:22;10060:49;:::i;:::-;10050:59;;;9592:523;;;;;:::o;10343:456::-;10420:6;10428;10436;10489:2;10477:9;10468:7;10464:23;10460:32;10457:52;;;10505:1;10502;10495:12;10457:52;10541:9;10528:23;10518:33;;10601:2;10590:9;10586:18;10573:32;10614:31;10639:5;10614:31;:::i;:::-;10664:5;-1:-1:-1;10721:2:43;10706:18;;10693:32;10734:33;10693:32;10734:33;:::i;10997:1068::-;11093:6;11101;11145:9;11136:7;11132:23;11175:3;11171:2;11167:12;11164:32;;;11192:1;11189;11182:12;11164:32;11215:23;;;-1:-1:-1;11272:4:43;-1:-1:-1;;11254:16:43;;11250:27;11247:47;;;11290:1;11287;11280:12;11247:47;;11323:2;11317:9;11365:4;11357:6;11353:17;11436:6;11424:10;11421:22;-1:-1:-1;;;;;11388:10:43;11385:34;11382:62;11379:88;;;11447:18;;:::i;:::-;11483:2;11476:22;11548:2;11533:18;;11520:32;11561:28;11520:32;11561:28;:::i;:::-;11598:21;;11671:2;11656:18;;11643:32;11684:30;11643:32;11684:30;:::i;:::-;11742:2;11730:15;;11723:32;11807:2;11792:18;;11779:32;11820:33;11779:32;11820:33;:::i;:::-;11881:2;11869:15;;11862:32;11946:4;11931:20;;11918:34;11961:32;11918:34;11961:32;:::i;:::-;12021:2;12009:15;;12002:32;10997:1068;;12013:6;;-1:-1:-1;10997:1068:43;;-1:-1:-1;;10997:1068:43:o;12070:388::-;12138:6;12146;12199:2;12187:9;12178:7;12174:23;12170:32;12167:52;;;12215:1;12212;12205:12;12167:52;12254:9;12241:23;12273:31;12298:5;12273:31;:::i;:::-;12323:5;-1:-1:-1;12380:2:43;12365:18;;12352:32;12393:33;12352:32;12393:33;:::i;12954:1005::-;13060:6;13068;13076;13084;13092;13100;13153:3;13141:9;13132:7;13128:23;13124:33;13121:53;;;13170:1;13167;13160:12;13121:53;13209:9;13196:23;13228:31;13253:5;13228:31;:::i;:::-;13278:5;-1:-1:-1;13335:2:43;13320:18;;13307:32;13348:33;13307:32;13348:33;:::i;:::-;13400:7;-1:-1:-1;13454:2:43;13439:18;;13426:32;;-1:-1:-1;13505:2:43;13490:18;;13477:32;;-1:-1:-1;13560:3:43;13545:19;;13532:33;-1:-1:-1;;;;;13614:14:43;;;13611:34;;;13641:1;13638;13631:12;13611:34;13679:6;13668:9;13664:22;13654:32;;13724:7;13717:4;13713:2;13709:13;13705:27;13695:55;;13746:1;13743;13736:12;13695:55;13786:2;13773:16;13812:2;13804:6;13801:14;13798:34;;;13828:1;13825;13818:12;13798:34;13873:7;13868:2;13859:6;13855:2;13851:15;13847:24;13844:37;13841:57;;;13894:1;13891;13884:12;13841:57;13925:2;13921;13917:11;13907:21;;13947:6;13937:16;;;;;12954:1005;;;;;;;;:::o;14171:127::-;14232:10;14227:3;14223:20;14220:1;14213:31;14263:4;14260:1;14253:15;14287:4;14284:1;14277:15;14303:426;-1:-1:-1;;;;;14548:32:43;;14530:51;;14612:2;14597:18;;14590:34;;;14518:2;14503:18;;14654:1;14643:13;;14633:47;;14660:18;;:::i;:::-;14716:6;14711:2;14700:9;14696:18;14689:34;14303:426;;;;;;:::o;14734:743::-;14838:6;14846;14854;14862;14915:3;14903:9;14894:7;14890:23;14886:33;14883:53;;;14932:1;14929;14922:12;14883:53;14971:9;14958:23;14990:31;15015:5;14990:31;:::i;:::-;15040:5;-1:-1:-1;15092:2:43;15077:18;;15064:32;;-1:-1:-1;15147:2:43;15132:18;;15119:32;-1:-1:-1;;;;;15200:14:43;;;15197:34;;;15227:1;15224;15217:12;15197:34;15250:49;15291:7;15282:6;15271:9;15267:22;15250:49;:::i;:::-;15240:59;;15352:2;15341:9;15337:18;15324:32;15308:48;;15381:2;15371:8;15368:16;15365:36;;;15397:1;15394;15387:12;15365:36;;15420:51;15463:7;15452:8;15441:9;15437:24;15420:51;:::i;:::-;15410:61;;;14734:743;;;;;;;:::o;15482:388::-;15559:6;15567;15620:2;15608:9;15599:7;15595:23;15591:32;15588:52;;;15636:1;15633;15626:12;15588:52;15672:9;15659:23;15649:33;;15733:2;15722:9;15718:18;15705:32;-1:-1:-1;;;;;15752:6:43;15749:30;15746:50;;;15792:1;15789;15782:12;15746:50;15815:49;15856:7;15847:6;15836:9;15832:22;15815:49;:::i;:::-;15805:59;;;15482:388;;;;;:::o;16380:183::-;16449:6;16502:2;16490:9;16481:7;16477:23;16473:32;16470:52;;;16518:1;16515;16508:12;16470:52;-1:-1:-1;16541:16:43;;16380:183;-1:-1:-1;16380:183:43:o;16568:127::-;16629:10;16624:3;16620:20;16617:1;16610:31;16660:4;16657:1;16650:15;16684:4;16681:1;16674:15;16700:553;16739:7;-1:-1:-1;;;;;16809:9:43;;;16837;;;16862:11;;;16881:10;;;16875:17;;16858:35;16855:61;;;16896:18;;:::i;:::-;-1:-1:-1;;;16972:1:43;16965:9;;16990:11;;;17010;;;17003:19;;16986:37;16983:63;;;17026:18;;:::i;:::-;17072:1;17069;17065:9;17055:19;;17119:1;17115:2;17110:11;17107:1;17103:19;17098:2;17094;17090:11;17086:37;17083:63;;;17126:18;;:::i;:::-;17191:1;17187:2;17182:11;17179:1;17175:19;17170:2;17166;17162:11;17158:37;17155:63;;;17198:18;;:::i;:::-;-1:-1:-1;;;17238:9:43;;;;;16700:553;-1:-1:-1;;;16700:553:43:o;17258:127::-;17319:10;17314:3;17310:20;17307:1;17300:31;17350:4;17347:1;17340:15;17374:4;17371:1;17364:15;17390:193;17429:1;17455;17445:35;;17460:18;;:::i;:::-;-1:-1:-1;;;17496:18:43;;-1:-1:-1;;17516:13:43;;17492:38;17489:64;;;17533:18;;:::i;:::-;-1:-1:-1;17567:10:43;;17390:193::o;17588:380::-;17667:1;17663:12;;;;17710;;;17731:61;;17785:4;17777:6;17773:17;17763:27;;17731:61;17838:2;17830:6;17827:14;17807:18;17804:38;17801:161;;;17884:10;17879:3;17875:20;17872:1;17865:31;17919:4;17916:1;17909:15;17947:4;17944:1;17937:15;17973:168;18013:7;18079:1;18075;18071:6;18067:14;18064:1;18061:21;18056:1;18049:9;18042:17;18038:45;18035:71;;;18086:18;;:::i;:::-;-1:-1:-1;18126:9:43;;17973:168::o;18146:120::-;18186:1;18212;18202:35;;18217:18;;:::i;:::-;-1:-1:-1;18251:9:43;;18146:120::o;18792:160::-;18869:13;;18922:4;18911:16;;18901:27;;18891:55;;18942:1;18939;18932:12;18957:388;19052:6;19060;19068;19076;19129:3;19117:9;19108:7;19104:23;19100:33;19097:53;;;19146:1;19143;19136:12;19097:53;19175:9;19169:16;19159:26;;19225:2;19214:9;19210:18;19204:25;19194:35;;19248:47;19291:2;19280:9;19276:18;19248:47;:::i;:::-;19335:2;19320:18;;;;19314:25;18957:388;;;;-1:-1:-1;;;18957:388:43:o;19953:391::-;20038:6;20046;20054;20107:2;20095:9;20086:7;20082:23;20078:32;20075:52;;;20123:1;20120;20113:12;20075:52;20155:9;20149:16;20174:30;20198:5;20174:30;:::i;:::-;20223:5;-1:-1:-1;20247:47:43;20290:2;20275:18;;20247:47;:::i;:::-;20237:57;;20334:2;20323:9;20319:18;20313:25;20303:35;;19953:391;;;;;:::o;20764:181::-;20822:4;-1:-1:-1;;;;;20847:6:43;20844:30;20841:56;;;20877:18;;:::i;:::-;-1:-1:-1;20922:1:43;20918:14;20934:4;20914:25;;20764:181::o;20950:677::-;21013:5;21066:3;21059:4;21051:6;21047:17;21043:27;21033:55;;21084:1;21081;21074:12;21033:55;21113:6;21107:13;21139:4;21163:58;21179:41;21217:2;21179:41;:::i;21163:58::-;21255:15;;;21341:1;21337:10;;;;21325:23;;21321:32;;;21286:12;;;;21365:15;;;21362:35;;;21393:1;21390;21383:12;21362:35;21429:2;21421:6;21417:15;21441:157;21457:6;21452:3;21449:15;21441:157;;;21523:32;21551:3;21523:32;:::i;:::-;21511:45;;21576:12;;;;21474;;21441:157;;;-1:-1:-1;21616:5:43;20950:677;-1:-1:-1;;;;;;20950:677:43:o;21632:1555::-;21737:6;21790:2;21778:9;21769:7;21765:23;21761:32;21758:52;;;21806:1;21803;21796:12;21758:52;21839:9;21833:16;-1:-1:-1;;;;;21909:2:43;21901:6;21898:14;21895:34;;;21925:1;21922;21915:12;21895:34;21948:22;;;;22004:6;21986:16;;;21982:29;21979:49;;;22024:1;22021;22014:12;21979:49;22050:22;;:::i;:::-;22095:31;22123:2;22095:31;:::i;:::-;22088:5;22081:46;22159:40;22195:2;22191;22187:11;22159:40;:::i;:::-;22154:2;22147:5;22143:14;22136:64;22232:40;22268:2;22264;22260:11;22232:40;:::i;:::-;22227:2;22220:5;22216:14;22209:64;22305:40;22341:2;22337;22333:11;22305:40;:::i;:::-;22300:2;22293:5;22289:14;22282:64;22379:41;22415:3;22411:2;22407:12;22379:41;:::i;:::-;22373:3;22366:5;22362:15;22355:66;22454:41;22490:3;22486:2;22482:12;22454:41;:::i;:::-;22448:3;22441:5;22437:15;22430:66;22529:41;22565:3;22561:2;22557:12;22529:41;:::i;:::-;22523:3;22516:5;22512:15;22505:66;22604:41;22640:3;22636:2;22632:12;22604:41;:::i;:::-;22598:3;22591:5;22587:15;22580:66;22665:3;22700:40;22736:2;22732;22728:11;22700:40;:::i;:::-;22684:14;;;22677:64;22760:3;22794:11;;;22788:18;22818:16;;;22815:36;;;22847:1;22844;22837:12;22815:36;22883:65;22940:7;22929:8;22925:2;22921:17;22883:65;:::i;:::-;22878:2;22871:5;22867:14;22860:89;;;22968:3;23010:2;23006;23002:11;22996:18;23039:2;23029:8;23026:16;23023:36;;;23055:1;23052;23045:12;23023:36;23091:65;23148:7;23137:8;23133:2;23129:17;23091:65;:::i;:::-;23075:14;;;23068:89;;;;-1:-1:-1;23079:5:43;21632:1555;-1:-1:-1;;;;;21632:1555:43:o;23882:635::-;23962:6;24015:2;24003:9;23994:7;23990:23;23986:32;23983:52;;;24031:1;24028;24021:12;23983:52;24064:9;24058:16;-1:-1:-1;;;;;24089:6:43;24086:30;24083:50;;;24129:1;24126;24119:12;24083:50;24152:22;;24205:4;24197:13;;24193:27;-1:-1:-1;24183:55:43;;24234:1;24231;24224:12;24183:55;24263:2;24257:9;24288:48;24304:31;24332:2;24304:31;:::i;24288:48::-;24359:2;24352:5;24345:17;24399:7;24394:2;24389;24385;24381:11;24377:20;24374:33;24371:53;;;24420:1;24417;24410:12;24371:53;24433:54;24484:2;24479;24472:5;24468:14;24463:2;24459;24455:11;24433:54;:::i;24522:756::-;-1:-1:-1;;;24928:3:43;24921:24;24903:3;24974:6;24968:13;24990:61;25044:6;25040:1;25035:3;25031:11;25024:4;25016:6;25012:17;24990:61;:::i;:::-;-1:-1:-1;;;25110:1:43;25070:16;;;25102:10;;;25095:25;25145:13;;25167:63;25145:13;25216:2;25208:11;;25201:4;25189:17;;25167:63;:::i;:::-;25250:17;25269:2;25246:26;;24522:756;-1:-1:-1;;;;24522:756:43:o;25283:745::-;-1:-1:-1;;;25689:3:43;25682:17;25664:3;25728:6;25722:13;25744:61;25798:6;25794:1;25789:3;25785:11;25778:4;25770:6;25766:17;25744:61;:::i;:::-;-1:-1:-1;;;25864:1:43;25824:16;;;25856:10;;;25849:23;25897:13;;25919:62;25897:13;25968:1;25960:10;;25953:4;25941:17;;25919:62;:::i;:::-;26001:17;26020:1;25997:25;;25283:745;-1:-1:-1;;;;25283:745:43:o;26033:400::-;26235:2;26217:21;;;26274:2;26254:18;;;26247:30;26313:34;26308:2;26293:18;;26286:62;-1:-1:-1;;;26379:2:43;26364:18;;26357:34;26423:3;26408:19;;26033:400::o;26845:408::-;27047:2;27029:21;;;27086:2;27066:18;;;27059:30;27125:34;27120:2;27105:18;;27098:62;-1:-1:-1;;;27191:2:43;27176:18;;27169:42;27243:3;27228:19;;26845:408::o;28780:125::-;28820:4;28848:1;28845;28842:8;28839:34;;;28853:18;;:::i;:::-;-1:-1:-1;28890:9:43;;28780:125::o;28910:505::-;29145:13;;29138:21;29131:29;29113:48;;29231:4;29219:17;;;29213:24;29206:32;29199:40;29177:20;;;29170:70;29300:4;29288:17;;;29282:24;-1:-1:-1;;;;;29278:50:43;29256:20;;;29249:80;29389:4;29377:17;;;29371:24;29397:10;29367:41;29345:20;;;29338:71;;;;29100:3;29085:19;;28910:505::o;29420:871::-;29483:5;29531:4;29519:9;29514:3;29510:19;29506:30;29503:50;;;29549:1;29546;29539:12;29503:50;29582:2;29576:9;29624:4;29616:6;29612:17;29695:6;29683:10;29680:22;-1:-1:-1;;;;;29647:10:43;29644:34;29641:62;29638:88;;;29706:18;;:::i;:::-;29746:10;29742:2;29735:22;;29775:6;29766:15;;29811:9;29805:16;29830:33;29855:7;29830:33;:::i;:::-;29872:23;;29940:2;29925:18;;29919:25;29953:30;29919:25;29953:30;:::i;:::-;30011:2;29999:15;;29992:32;30078:2;30063:18;;;30057:25;30040:15;;;30033:50;30128:2;30113:18;;30107:25;30163:1;30151:14;;30141:42;;30179:1;30176;30169:12;30141:42;30211:2;30199:15;;30192:32;30279:3;30264:19;;;30258:26;30240:16;;30233:52;;;;29420:871;;-1:-1:-1;29420:871:43:o;30296:369::-;30421:6;30429;30482:3;30470:9;30461:7;30457:23;30453:33;30450:53;;;30499:1;30496;30489:12;30450:53;30522:54;30568:7;30557:9;30522:54;:::i;:::-;30512:64;;30595;30651:7;30645:3;30634:9;30630:19;30595:64;:::i;:::-;30585:74;;30296:369;;;;;:::o;30670:355::-;30872:2;30854:21;;;30911:2;30891:18;;;30884:30;30950:33;30945:2;30930:18;;30923:61;31016:2;31001:18;;30670:355::o;31365:1087::-;31467:6;31520:3;31508:9;31499:7;31495:23;31491:33;31488:53;;;31537:1;31534;31527:12;31488:53;31570:2;31564:9;31612:3;31604:6;31600:16;31682:6;31670:10;31667:22;-1:-1:-1;;;;;31634:10:43;31631:34;31628:62;31625:88;;;31693:18;;:::i;:::-;31729:2;31722:22;31766:16;;31791:30;31766:16;31791:30;:::i;:::-;31830:21;;31896:2;31881:18;;31875:25;-1:-1:-1;;;;;;31931:27:43;;31919:40;;31909:68;;31973:1;31970;31963:12;31909:68;32005:2;31993:15;;31986:32;32051:47;32094:2;32079:18;;32051:47;:::i;:::-;32046:2;32038:6;32034:15;32027:72;32144:2;32133:9;32129:18;32123:25;32157:32;32181:7;32157:32;:::i;:::-;32217:2;32205:15;;32198:32;32275:3;32260:19;;32254:26;-1:-1:-1;;32311:49:43;;32299:62;;32289:90;;32375:1;32372;32365:12;32289:90;32407:3;32395:16;;32388:33;32399:6;31365:1087;-1:-1:-1;;;31365:1087:43:o;32457:1690::-;32584:6;32615:2;32658;32646:9;32637:7;32633:23;32629:32;32626:52;;;32674:1;32671;32664:12;32626:52;32707:9;32701:16;-1:-1:-1;;;;;32732:6:43;32729:30;32726:50;;;32772:1;32769;32762:12;32726:50;32795:22;;32848:4;32840:13;;32836:27;-1:-1:-1;32826:55:43;;32877:1;32874;32867:12;32826:55;32906:2;32900:9;32929:58;32945:41;32983:2;32945:41;:::i;32929:58::-;33021:15;;;33083:4;33122:11;;;33114:20;;33110:29;;;33052:12;;;;33009:3;33151:19;;;33148:39;;;33183:1;33180;33173:12;33148:39;33207:11;;;;33227:890;33243:6;33238:3;33235:15;33227:890;;;33323:2;33317:3;33308:7;33304:17;33300:26;33297:116;;;33367:1;33396:2;33392;33385:14;33297:116;33439:22;;:::i;:::-;33488:10;;33474:25;;33541:12;;;33535:19;33519:14;;;33512:43;33578:2;33622:12;;;33616:19;33600:14;;;33593:43;33659:2;33703:12;;;33697:19;33681:14;;;33674:43;33740:3;33785:12;;;33779:19;33763:14;;;33756:43;33822:3;33859:12;;;33853:19;33907:1;33895:14;;33885:115;;33952:1;33982:3;33977;33970:16;33885:115;34020:14;;;34013:31;34057:18;;33260:12;;;;34095;;;;33227:890;;;-1:-1:-1;34136:5:43;32457:1690;-1:-1:-1;;;;;;;32457:1690:43:o;34152:127::-;34213:10;34208:3;34204:20;34201:1;34194:31;34244:4;34241:1;34234:15;34268:4;34265:1;34258:15;34976:304;35062:6;35070;35078;35131:2;35119:9;35110:7;35106:23;35102:32;35099:52;;;35147:1;35144;35137:12;35099:52;35176:9;35170:16;35160:26;;35226:2;35215:9;35211:18;35205:25;35195:35;;35270:2;35259:9;35255:18;35249:25;35239:35;;34976:304;;;;;:::o;37120:435::-;37173:3;37211:5;37205:12;37238:6;37233:3;37226:19;37264:4;37293:2;37288:3;37284:12;37277:19;;37330:2;37323:5;37319:14;37351:1;37361:169;37375:6;37372:1;37369:13;37361:169;;;37436:13;;37424:26;;37470:12;;;;37505:15;;;;37397:1;37390:9;37361:169;;;-1:-1:-1;37546:3:43;;37120:435;-1:-1:-1;;;;;37120:435:43:o;37560:1786::-;-1:-1:-1;;;;;37911:32:43;;37893:51;;37841:2;37963;37981:18;;;37974:30;;;38053:13;;37866:18;;;38075:22;;;37812:4;;37841:2;38116;;38134:18;;;;38198:1;38194:14;;;38179:30;;38175:39;;38237:15;;;37812:4;38280:1037;38294:6;38291:1;38288:13;38280:1037;;;38387:2;38383:7;38371:9;38363:6;38359:22;38355:36;38350:3;38343:49;38421:6;38415:13;38451:4;38484:2;38478:9;38517:1;38513:2;38510:9;38500:43;;38523:18;;:::i;:::-;38556;;38621:11;;;38615:18;38635:6;38611:31;38594:15;;;38587:56;38686:11;;;38680:18;38663:15;;;38656:43;38742:11;;;38736:18;38719:15;;;38712:43;38778:4;38821:11;;;38815:18;2321:13;2314:21;38876:15;;;2302:34;38915:4;38960:11;;;38954:18;2321:13;2314:21;39017:15;;;2302:34;39056:4;39101:11;;;39095:18;39133:15;;;39126:27;;;39176:61;39221:15;;;39095:18;39176:61;:::i;:::-;39295:12;;;;39166:71;-1:-1:-1;;;39260:15:43;;;;38316:1;38309:9;38280:1037;;;-1:-1:-1;39334:6:43;;37560:1786;-1:-1:-1;;;;;;;;;;37560:1786:43:o;39351:1245::-;-1:-1:-1;;;;;39674:32:43;;39656:51;;39604:2;39726;39744:18;;;39737:30;;;39816:13;;39629:18;;;39838:22;;;39575:4;;39604:2;39879;;39897:18;;;;39961:1;39957:14;;;39942:30;;39938:39;;40000:15;;;39575:4;40043:524;40057:6;40054:1;40051:13;40043:524;;;40122:22;;;-1:-1:-1;;40118:36:43;40106:49;;40178:13;;40223:9;;40234:6;40219:22;40204:38;;40299:11;;;40293:18;40286:26;40279:34;40262:15;;;40255:59;40353:11;;40347:18;40385:15;;;40378:27;;;40428:59;40471:15;;;40347:18;40428:59;:::i;:::-;40545:12;;;;40418:69;-1:-1:-1;;40510:15:43;;;;40079:1;40072:9;40043:524;;40601:128;40641:3;40672:1;40668:6;40665:1;40662:13;40659:39;;;40678:18;;:::i;:::-;-1:-1:-1;40714:9:43;;40601:128::o;40734:135::-;40773:3;-1:-1:-1;;40794:17:43;;40791:43;;;40814:18;;:::i;:::-;-1:-1:-1;40861:1:43;40850:13;;40734:135::o;40874:112::-;40906:1;40932;40922:35;;40937:18;;:::i;:::-;-1:-1:-1;40971:9:43;;40874:112::o;40991:407::-;41193:2;41175:21;;;41232:2;41212:18;;;41205:30;41271:34;41266:2;41251:18;;41244:62;-1:-1:-1;;;41337:2:43;41322:18;;41315:41;41388:3;41373:19;;40991:407::o;42693:251::-;42763:6;42816:2;42804:9;42795:7;42791:23;42787:32;42784:52;;;42832:1;42829;42822:12;42784:52;42864:9;42858:16;42883:31;42908:5;42883:31;:::i;42949:732::-;-1:-1:-1;;;;;43292:15:43;;;43274:34;;43344:15;;;43339:2;43324:18;;43317:43;43396:15;;43391:2;43376:18;;43369:43;43443:2;43428:18;;43421:34;;;43492:3;43486;43471:19;;43464:32;;;43217:4;;43519:46;;43545:19;;43537:6;43519:46;:::i;:::-;43614:9;43606:6;43602:22;43596:3;43585:9;43581:19;43574:51;43642:33;43668:6;43660;43642:33;:::i;44453:450::-;44674:6;44663:9;44656:25;44717:2;44712;44701:9;44697:18;44690:30;44637:4;44743:45;44784:2;44773:9;44769:18;44761:6;44743:45;:::i;:::-;44836:9;44828:6;44824:22;44819:2;44808:9;44804:18;44797:50;44864:33;44890:6;44882;44864:33;:::i;:::-;44856:41;44453:450;-1:-1:-1;;;;;;44453:450:43:o;47568:903::-;47666:6;47719:3;47707:9;47698:7;47694:23;47690:33;47687:53;;;47736:1;47733;47726:12;47687:53;47769:2;47763:9;47811:3;47803:6;47799:16;47881:6;47869:10;47866:22;-1:-1:-1;;;;;47833:10:43;47830:34;47827:62;47824:88;;;47892:18;;:::i;:::-;47928:2;47921:22;47965:16;;47990:28;47965:16;47990:28;:::i;:::-;48027:21;;48093:2;48078:18;;48072:25;48106:30;48072:25;48106:30;:::i;:::-;48164:2;48152:15;;48145:32;48222:2;48207:18;;48201:25;48235:33;48201:25;48235:33;:::i;:::-;48296:2;48284:15;;48277:32;48354:2;48339:18;;48333:25;48367:32;48333:25;48367:32;:::i;:::-;48427:2;48415:15;;48408:32;48419:6;47568:903;-1:-1:-1;;;47568:903:43:o;49179:561::-;-1:-1:-1;;;;;49476:15:43;;;49458:34;;49528:15;;49523:2;49508:18;;49501:43;49575:2;49560:18;;49553:34;;;49618:2;49603:18;;49596:34;;;49438:3;49661;49646:19;;49639:32;;;49401:4;;49688:46;;49714:19;;49706:6;49688:46;:::i;50847:245::-;50914:6;50967:2;50955:9;50946:7;50942:23;50938:32;50935:52;;;50983:1;50980;50973:12;50935:52;51015:9;51009:16;51034:28;51056:5;51034:28;:::i;53454:274::-;53583:3;53621:6;53615:13;53637:53;53683:6;53678:3;53671:4;53663:6;53659:17;53637:53;:::i;:::-;53706:16;;;;;53454:274;-1:-1:-1;;53454:274:43:o"
            },
            "methodIdentifiers": {
              "NotionalV2()": "19b53d35",
              "WETH()": "ad5c4648",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "asset()": "38d52e0f",
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "convertToAssets(uint256)": "07a2d13a",
              "convertToShares(uint256)": "c6e6f592",
              "decimals()": "313ce567",
              "defaultOperators()": "06e48538",
              "deposit(uint256,address)": "6e553f65",
              "getAssetToken()": "f8eef10f",
              "getCurrencyId()": "cf387fed",
              "getDecodedID()": "48d8f98d",
              "getMarketIndex()": "cb803ceb",
              "getMaturity()": "e16695b5",
              "getToken(bool)": "51489551",
              "getUnderlyingToken()": "ee719bc8",
              "getfCashId()": "0558d500",
              "granularity()": "556f0dc7",
              "hasMatured()": "a1093295",
              "initialize(uint16,uint40)": "152b838c",
              "isOperatorFor(address,address)": "d95b6371",
              "maxDeposit(address)": "402d267d",
              "maxMint(address)": "c63d75b6",
              "maxRedeem(address)": "d905777e",
              "maxWithdraw(address)": "ce96cb77",
              "mint(uint256,address)": "94bf804d",
              "mintViaAsset(uint256,uint88,address,uint32)": "0db8481c",
              "mintViaUnderlying(uint256,uint88,address,uint32)": "29cf1405",
              "name()": "06fdde03",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "previewDeposit(uint256)": "ef8b30f7",
              "previewMint(uint256)": "b3d7f6b9",
              "previewRedeem(uint256)": "4cdad506",
              "previewWithdraw(uint256)": "0a28a477",
              "redeem(uint256,(bool,bool,address,uint32))": "d84878b8",
              "redeem(uint256,address,address)": "ba087652",
              "redeemToAsset(uint256,address,uint32)": "3d3192cb",
              "redeemToUnderlying(uint256,address,uint32)": "745d08d9",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalAssets()": "01e1d114",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256,address,address)": "b460af94"
            }
          }
        }
      },
      "wrapped-fcash/contracts/wfCashLogic.sol": {
        "wfCashLogic": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "NotionalV2",
              "outputs": [
                {
                  "internalType": "contract INotionalV2",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH",
              "outputs": [
                {
                  "internalType": "contract IWETH9",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "assetToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyId",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDecodedID",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketIndex",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaturity",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "getToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isETH",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getUnderlyingToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "underlyingToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getfCashId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "hasMatured",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "transferfCash",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "receiver",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "maxImpliedRate",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct IWrappedfCash.RedeemOpts",
                  "name": "opts",
                  "type": "tuple"
                }
              ],
              "name": "redeem",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "holder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "NotionalV2()": "19b53d35",
              "WETH()": "ad5c4648",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "decimals()": "313ce567",
              "defaultOperators()": "06e48538",
              "getAssetToken()": "f8eef10f",
              "getCurrencyId()": "cf387fed",
              "getDecodedID()": "48d8f98d",
              "getMarketIndex()": "cb803ceb",
              "getMaturity()": "e16695b5",
              "getToken(bool)": "51489551",
              "getUnderlyingToken()": "ee719bc8",
              "getfCashId()": "0558d500",
              "granularity()": "556f0dc7",
              "hasMatured()": "a1093295",
              "initialize(uint16,uint40)": "152b838c",
              "isOperatorFor(address,address)": "d95b6371",
              "mintViaAsset(uint256,uint88,address,uint32)": "0db8481c",
              "mintViaUnderlying(uint256,uint88,address,uint32)": "29cf1405",
              "name()": "06fdde03",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "redeem(uint256,(bool,bool,address,uint32))": "d84878b8",
              "redeemToAsset(uint256,address,uint32)": "3d3192cb",
              "redeemToUnderlying(uint256,address,uint32)": "745d08d9",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "wrapped-fcash/interfaces/IERC4626.sol": {
        "IERC4626": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "asset",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "assetTokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "convertToAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "convertToShares",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "maxDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxAssets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "maxMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxShares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxShares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxAssets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "redeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "totalManagedAssets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "asset()": "38d52e0f",
              "convertToAssets(uint256)": "07a2d13a",
              "convertToShares(uint256)": "c6e6f592",
              "deposit(uint256,address)": "6e553f65",
              "maxDeposit(address)": "402d267d",
              "maxMint(address)": "c63d75b6",
              "maxRedeem(address)": "d905777e",
              "maxWithdraw(address)": "ce96cb77",
              "mint(uint256,address)": "94bf804d",
              "previewDeposit(uint256)": "ef8b30f7",
              "previewMint(uint256)": "b3d7f6b9",
              "previewRedeem(uint256)": "4cdad506",
              "previewWithdraw(uint256)": "0a28a477",
              "redeem(uint256,address,address)": "ba087652",
              "totalAssets()": "01e1d114",
              "withdraw(uint256,address,address)": "b460af94"
            }
          }
        }
      },
      "wrapped-fcash/interfaces/IWETH9.sol": {
        "IWETH9": {
          "abi": [
            {
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "dst",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "deposit()": "d0e30db0",
              "transfer(address,uint256)": "a9059cbb",
              "withdraw(uint256)": "2e1a7d4d"
            }
          }
        }
      },
      "wrapped-fcash/interfaces/notional/INotionalV2.sol": {
        "INotionalV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum DepositActionType",
                      "name": "actionType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint16",
                      "name": "currencyId",
                      "type": "uint16"
                    },
                    {
                      "internalType": "uint256",
                      "name": "depositActionAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "withdrawAmountInternalPrecision",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bool",
                      "name": "withdrawEntireCashBalance",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "trades",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct BalanceActionWithTrades[]",
                  "name": "actions",
                  "type": "tuple[]"
                }
              ],
              "name": "batchBalanceAndTradeAction",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "uint16",
                      "name": "currencyId",
                      "type": "uint16"
                    },
                    {
                      "internalType": "bool",
                      "name": "depositUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "trades",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct BatchLend[]",
                  "name": "actions",
                  "type": "tuple[]"
                }
              ],
              "name": "batchLend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "int256",
                  "name": "cashBalanceInternal",
                  "type": "int256"
                },
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "convertCashBalanceToExternal",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getAccountBalance",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "cashBalance",
                  "type": "int256"
                },
                {
                  "internalType": "int256",
                  "name": "nTokenBalance",
                  "type": "int256"
                },
                {
                  "internalType": "uint256",
                  "name": "lastClaimTime",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getAccountContext",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint40",
                      "name": "nextSettleTime",
                      "type": "uint40"
                    },
                    {
                      "internalType": "bytes1",
                      "name": "hasDebt",
                      "type": "bytes1"
                    },
                    {
                      "internalType": "uint8",
                      "name": "assetArrayLength",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint16",
                      "name": "bitmapCurrencyId",
                      "type": "uint16"
                    },
                    {
                      "internalType": "bytes18",
                      "name": "activeCurrencies",
                      "type": "bytes18"
                    }
                  ],
                  "internalType": "struct AccountContext",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getAccountPortfolio",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "currencyId",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maturity",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "assetType",
                      "type": "uint256"
                    },
                    {
                      "internalType": "int256",
                      "name": "notional",
                      "type": "int256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "storageSlot",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum AssetStorageState",
                      "name": "storageState",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct PortfolioAsset[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "name": "getCashGroup",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "maxMarketIndex",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "rateOracleTimeWindowMin",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "totalFeeBPS",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "reserveFeeShare",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "debtBuffer5BPS",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "fCashHaircut5BPS",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "settlementPenaltyRate5BPS",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "liquidationfCashHaircut5BPS",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8",
                      "name": "liquidationDebtBuffer5BPS",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint8[]",
                      "name": "liquidityTokenHaircuts",
                      "type": "uint8[]"
                    },
                    {
                      "internalType": "uint8[]",
                      "name": "rateScalars",
                      "type": "uint8[]"
                    }
                  ],
                  "internalType": "struct CashGroupSettings",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "name": "getCurrency",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "hasTransferFee",
                      "type": "bool"
                    },
                    {
                      "internalType": "int256",
                      "name": "decimals",
                      "type": "int256"
                    },
                    {
                      "internalType": "enum TokenType",
                      "name": "tokenType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxCollateralBalance",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct Token",
                  "name": "assetToken",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "hasTransferFee",
                      "type": "bool"
                    },
                    {
                      "internalType": "int256",
                      "name": "decimals",
                      "type": "int256"
                    },
                    {
                      "internalType": "enum TokenType",
                      "name": "tokenType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "maxCollateralBalance",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct Token",
                  "name": "underlyingToken",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint256",
                  "name": "fCashAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maturity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "minLendRate",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "blockTime",
                  "type": "uint256"
                }
              ],
              "name": "getDepositFromfCashLend",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountUnderlying",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmountAsset",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "marketIndex",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "encodedTrade",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint256",
                  "name": "maturity",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "notional",
                  "type": "int256"
                },
                {
                  "internalType": "uint256",
                  "name": "blockTime",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "riskAdjusted",
                  "type": "bool"
                }
              ],
              "name": "getPresentfCashValue",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "presentValue",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint256",
                  "name": "fCashBorrow",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maturity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "maxBorrowRate",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "blockTime",
                  "type": "uint256"
                }
              ],
              "name": "getPrincipalFromfCashBorrow",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "borrowAmountUnderlying",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "borrowAmountAsset",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "marketIndex",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "encodedTrade",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint256",
                  "name": "borrowedAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maturity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "maxBorrowRate",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "blockTime",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "getfCashBorrowFromPrincipal",
              "outputs": [
                {
                  "internalType": "uint88",
                  "name": "fCashDebt",
                  "type": "uint88"
                },
                {
                  "internalType": "uint8",
                  "name": "marketIndex",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "encodedTrade",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maturity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "minLendRate",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "blockTime",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "useUnderlying",
                  "type": "bool"
                }
              ],
              "name": "getfCashLendFromDeposit",
              "outputs": [
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "uint8",
                  "name": "marketIndex",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "encodedTrade",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "settleAccount",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint88",
                  "name": "amountInternalPrecision",
                  "type": "uint88"
                },
                {
                  "internalType": "bool",
                  "name": "redeemToUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "batchBalanceAndTradeAction(address,(uint8,uint16,uint256,uint256,bool,bool,bytes32[])[])": "0276b64b",
              "batchLend(address,(uint16,bool,bytes32[])[])": "541f5270",
              "convertCashBalanceToExternal(uint16,int256,bool)": "6ebbf174",
              "getAccountBalance(uint16,address)": "fc1b1345",
              "getAccountContext(address)": "b0de2217",
              "getAccountPortfolio(address)": "b536ffb6",
              "getCashGroup(uint16)": "d4ccb0ed",
              "getCurrency(uint16)": "4ebad18e",
              "getDepositFromfCashLend(uint16,uint256,uint256,uint32,uint256)": "aaae47b5",
              "getPresentfCashValue(uint16,uint256,int256,uint256,bool)": "c52c43e1",
              "getPrincipalFromfCashBorrow(uint16,uint256,uint256,uint32,uint256)": "416a1587",
              "getfCashBorrowFromPrincipal(uint16,uint256,uint256,uint32,uint256,bool)": "bac9e8b1",
              "getfCashLendFromDeposit(uint16,uint256,uint256,uint32,uint256,bool)": "f83a8608",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "settleAccount(address)": "f667f897",
              "withdraw(uint16,uint88,bool)": "02f332e8"
            }
          }
        }
      },
      "wrapped-fcash/interfaces/notional/IWrappedfCash.sol": {
        "IWrappedfCash": {
          "abi": [
            {
              "inputs": [],
              "name": "getAssetToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "assetToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "assetPrecision",
                  "type": "int256"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyId",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDecodedID",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketIndex",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaturity",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getUnderlyingToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "underlyingToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getfCashId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "hasMatured",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "transferfCash",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "receiver",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "maxImpliedRate",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct IWrappedfCash.RedeemOpts",
                  "name": "data",
                  "type": "tuple"
                }
              ],
              "name": "redeem",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getAssetToken()": "f8eef10f",
              "getCurrencyId()": "cf387fed",
              "getDecodedID()": "48d8f98d",
              "getMarketIndex()": "cb803ceb",
              "getMaturity()": "e16695b5",
              "getUnderlyingToken()": "ee719bc8",
              "getfCashId()": "0558d500",
              "hasMatured()": "a1093295",
              "initialize(uint16,uint40)": "152b838c",
              "mintViaAsset(uint256,uint88,address,uint32)": "0db8481c",
              "mintViaUnderlying(uint256,uint88,address,uint32)": "29cf1405",
              "redeem(uint256,(bool,bool,address,uint32))": "d84878b8",
              "redeemToAsset(uint256,address,uint32)": "3d3192cb",
              "redeemToUnderlying(uint256,address,uint32)": "745d08d9"
            }
          }
        },
        "IWrappedfCashComplete": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "AuthorizedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Burned",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Minted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "RevokedOperator",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "Sent",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "asset",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "assetTokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "authorizeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "convertToAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "convertToShares",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "defaultOperators",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssetToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "assetToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "assetPrecision",
                  "type": "int256"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyId",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDecodedID",
              "outputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketIndex",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaturity",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getUnderlyingToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "underlyingToken",
                  "type": "address"
                },
                {
                  "internalType": "int256",
                  "name": "underlyingPrecision",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getfCashId",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "granularity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "hasMatured",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint16",
                  "name": "currencyId",
                  "type": "uint16"
                },
                {
                  "internalType": "uint40",
                  "name": "maturity",
                  "type": "uint40"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenHolder",
                  "type": "address"
                }
              ],
              "name": "isOperatorFor",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "maxDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxAssets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "maxMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxShares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxShares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "maxWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "maxAssets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "depositAmountExternal",
                  "type": "uint256"
                },
                {
                  "internalType": "uint88",
                  "name": "fCashAmount",
                  "type": "uint88"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "minImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "mintViaUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorBurn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "operatorData",
                  "type": "bytes"
                }
              ],
              "name": "operatorSend",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewMint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "name": "previewRedeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "name": "previewWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "redeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "redeemToUnderlying",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "transferfCash",
                      "type": "bool"
                    },
                    {
                      "internalType": "address",
                      "name": "receiver",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "maxImpliedRate",
                      "type": "uint32"
                    }
                  ],
                  "internalType": "struct IWrappedfCash.RedeemOpts",
                  "name": "data",
                  "type": "tuple"
                }
              ],
              "name": "redeem",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToAsset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "maxImpliedRate",
                  "type": "uint32"
                }
              ],
              "name": "redeemToUnderlying",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "revokeOperator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "send",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAssets",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "totalManagedAssets",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "assets",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "shares",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "asset()": "38d52e0f",
              "authorizeOperator(address)": "959b8c3f",
              "balanceOf(address)": "70a08231",
              "burn(uint256,bytes)": "fe9d9303",
              "convertToAssets(uint256)": "07a2d13a",
              "convertToShares(uint256)": "c6e6f592",
              "defaultOperators()": "06e48538",
              "deposit(uint256,address)": "6e553f65",
              "getAssetToken()": "f8eef10f",
              "getCurrencyId()": "cf387fed",
              "getDecodedID()": "48d8f98d",
              "getMarketIndex()": "cb803ceb",
              "getMaturity()": "e16695b5",
              "getUnderlyingToken()": "ee719bc8",
              "getfCashId()": "0558d500",
              "granularity()": "556f0dc7",
              "hasMatured()": "a1093295",
              "initialize(uint16,uint40)": "152b838c",
              "isOperatorFor(address,address)": "d95b6371",
              "maxDeposit(address)": "402d267d",
              "maxMint(address)": "c63d75b6",
              "maxRedeem(address)": "d905777e",
              "maxWithdraw(address)": "ce96cb77",
              "mint(uint256,address)": "94bf804d",
              "mintViaAsset(uint256,uint88,address,uint32)": "0db8481c",
              "mintViaUnderlying(uint256,uint88,address,uint32)": "29cf1405",
              "name()": "06fdde03",
              "operatorBurn(address,uint256,bytes,bytes)": "fc673c4f",
              "operatorSend(address,address,uint256,bytes,bytes)": "62ad1b83",
              "previewDeposit(uint256)": "ef8b30f7",
              "previewMint(uint256)": "b3d7f6b9",
              "previewRedeem(uint256)": "4cdad506",
              "previewWithdraw(uint256)": "0a28a477",
              "redeem(uint256,(bool,bool,address,uint32))": "d84878b8",
              "redeem(uint256,address,address)": "ba087652",
              "redeemToAsset(uint256,address,uint32)": "3d3192cb",
              "redeemToUnderlying(uint256,address,uint32)": "745d08d9",
              "revokeOperator(address)": "fad8b32a",
              "send(address,uint256,bytes)": "9bd9bbc6",
              "symbol()": "95d89b41",
              "totalAssets()": "01e1d114",
              "totalSupply()": "18160ddd",
              "withdraw(uint256,address,address)": "b460af94"
            }
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> wrapped-fcash/interfaces/IERC4626.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "wrapped-fcash/interfaces/IERC4626.sol",
          "start": -1
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              1785
            ],
            "Initializable": [
              73
            ]
          },
          "id": 74,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:23:0"
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/utils/AddressUpgradeable.sol",
              "file": "../../utils/AddressUpgradeable.sol",
              "id": 2,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 74,
              "sourceUnit": 1786,
              "src": "138:44:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Initializable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3,
                "nodeType": "StructuredDocumentation",
                "src": "184:1497:0",
                "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To initialize the implementation contract, you can either invoke the\n initializer manually, or you can include a constructor to automatically mark it as initialized when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() initializer {}\n ```\n ===="
              },
              "fullyImplemented": true,
              "id": 73,
              "linearizedBaseContracts": [
                73
              ],
              "name": "Initializable",
              "nameLocation": "1700:13:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 4,
                    "nodeType": "StructuredDocumentation",
                    "src": "1720:73:0",
                    "text": " @dev Indicates that the contract has been initialized."
                  },
                  "id": 6,
                  "mutability": "mutable",
                  "name": "_initialized",
                  "nameLocation": "1811:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 73,
                  "src": "1798:25:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1798:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 7,
                    "nodeType": "StructuredDocumentation",
                    "src": "1830:91:0",
                    "text": " @dev Indicates that the contract is in the process of being initialized."
                  },
                  "id": 9,
                  "mutability": "mutable",
                  "name": "_initializing",
                  "nameLocation": "1939:13:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 73,
                  "src": "1926:26:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1926:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 46,
                    "nodeType": "Block",
                    "src": "2080:637:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "condition": {
                                "id": 13,
                                "name": "_initializing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9,
                                "src": "2369:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "id": 17,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "2404:13:0",
                                "subExpression": {
                                  "id": 16,
                                  "name": "_initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6,
                                  "src": "2405:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "2369:48:0",
                              "trueExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 14,
                                  "name": "_isConstructor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 72,
                                  "src": "2385:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 15,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2385:16:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564",
                              "id": 19,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2419:48:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              },
                              "value": "Initializable: contract is already initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759",
                                "typeString": "literal_string \"Initializable: contract is already initialized\""
                              }
                            ],
                            "id": 12,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2361:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2361:107:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21,
                        "nodeType": "ExpressionStatement",
                        "src": "2361:107:0"
                      },
                      {
                        "assignments": [
                          23
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23,
                            "mutability": "mutable",
                            "name": "isTopLevelCall",
                            "nameLocation": "2484:14:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 46,
                            "src": "2479:19:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2479:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 26,
                        "initialValue": {
                          "id": 25,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2501:14:0",
                          "subExpression": {
                            "id": 24,
                            "name": "_initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9,
                            "src": "2502:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2479:36:0"
                      },
                      {
                        "condition": {
                          "id": 27,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "2529:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 37,
                        "nodeType": "IfStatement",
                        "src": "2525:98:0",
                        "trueBody": {
                          "id": 36,
                          "nodeType": "Block",
                          "src": "2545:78:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 30,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 28,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9,
                                  "src": "2559:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 29,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2575:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "2559:20:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 31,
                              "nodeType": "ExpressionStatement",
                              "src": "2559:20:0"
                            },
                            {
                              "expression": {
                                "id": 34,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 32,
                                  "name": "_initialized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6,
                                  "src": "2593:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 33,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2608:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "2593:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 35,
                              "nodeType": "ExpressionStatement",
                              "src": "2593:19:0"
                            }
                          ]
                        }
                      },
                      {
                        "id": 38,
                        "nodeType": "PlaceholderStatement",
                        "src": "2633:1:0"
                      },
                      {
                        "condition": {
                          "id": 39,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "2649:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 45,
                        "nodeType": "IfStatement",
                        "src": "2645:66:0",
                        "trueBody": {
                          "id": 44,
                          "nodeType": "Block",
                          "src": "2665:46:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 42,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 40,
                                  "name": "_initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9,
                                  "src": "2679:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 41,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2695:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "2679:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 43,
                              "nodeType": "ExpressionStatement",
                              "src": "2679:21:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10,
                    "nodeType": "StructuredDocumentation",
                    "src": "1959:93:0",
                    "text": " @dev Modifier to protect an initializer function from being invoked twice."
                  },
                  "id": 47,
                  "name": "initializer",
                  "nameLocation": "2066:11:0",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2077:2:0"
                  },
                  "src": "2057:660:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 56,
                    "nodeType": "Block",
                    "src": "2934:97:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 51,
                              "name": "_initializing",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "2952:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67",
                              "id": 52,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2967:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b",
                                "typeString": "literal_string \"Initializable: contract is not initializing\""
                              },
                              "value": "Initializable: contract is not initializing"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b",
                                "typeString": "literal_string \"Initializable: contract is not initializing\""
                              }
                            ],
                            "id": 50,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2944:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 53,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2944:69:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 54,
                        "nodeType": "ExpressionStatement",
                        "src": "2944:69:0"
                      },
                      {
                        "id": 55,
                        "nodeType": "PlaceholderStatement",
                        "src": "3023:1:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 48,
                    "nodeType": "StructuredDocumentation",
                    "src": "2723:178:0",
                    "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} modifier, directly or indirectly."
                  },
                  "id": 57,
                  "name": "onlyInitializing",
                  "nameLocation": "2915:16:0",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 49,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2931:2:0"
                  },
                  "src": "2906:125:0",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 71,
                    "nodeType": "Block",
                    "src": "3091:69:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 69,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3108:45:0",
                          "subExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 66,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "3147:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Initializable_$73",
                                      "typeString": "contract Initializable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Initializable_$73",
                                      "typeString": "contract Initializable"
                                    }
                                  ],
                                  "id": 65,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3139:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 64,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3139:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 67,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3139:13:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 62,
                                "name": "AddressUpgradeable",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1785,
                                "src": "3109:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_AddressUpgradeable_$1785_$",
                                  "typeString": "type(library AddressUpgradeable)"
                                }
                              },
                              "id": 63,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1560,
                              "src": "3109:29:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 68,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3109:44:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 61,
                        "id": 70,
                        "nodeType": "Return",
                        "src": "3101:52:0"
                      }
                    ]
                  },
                  "id": 72,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isConstructor",
                  "nameLocation": "3046:14:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 58,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3060:2:0"
                  },
                  "returnParameters": {
                    "id": 61,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 60,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 72,
                        "src": "3085:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 59,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3085:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3084:6:0"
                  },
                  "scope": 73,
                  "src": "3037:123:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 74,
              "src": "1682:1480:0",
              "usedErrors": []
            }
          ],
          "src": "113:3050:0"
        },
        "id": 0
      },
      "@openzeppelin-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
          "exportedSymbols": {
            "IERC20Upgradeable": [
              151
            ]
          },
          "id": 152,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 75,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:23:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20Upgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 76,
                "nodeType": "StructuredDocumentation",
                "src": "131:70:1",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 151,
              "linearizedBaseContracts": [
                151
              ],
              "name": "IERC20Upgradeable",
              "nameLocation": "212:17:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 77,
                    "nodeType": "StructuredDocumentation",
                    "src": "236:66:1",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 82,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "316:11:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 78,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "327:2:1"
                  },
                  "returnParameters": {
                    "id": 81,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 80,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 82,
                        "src": "353:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 79,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "353:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "352:9:1"
                  },
                  "scope": 151,
                  "src": "307:55:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 83,
                    "nodeType": "StructuredDocumentation",
                    "src": "368:72:1",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 90,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "454:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 86,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 85,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "472:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 90,
                        "src": "464:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 84,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "464:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "463:17:1"
                  },
                  "returnParameters": {
                    "id": 89,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 88,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 90,
                        "src": "504:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 87,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "503:9:1"
                  },
                  "scope": 151,
                  "src": "445:68:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 91,
                    "nodeType": "StructuredDocumentation",
                    "src": "519:202:1",
                    "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 100,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "735:8:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 96,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 93,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "752:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 100,
                        "src": "744:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 92,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "744:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 95,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "764:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 100,
                        "src": "756:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 94,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "756:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "743:28:1"
                  },
                  "returnParameters": {
                    "id": 99,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 98,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 100,
                        "src": "790:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 97,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "790:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "789:6:1"
                  },
                  "scope": 151,
                  "src": "726:70:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 101,
                    "nodeType": "StructuredDocumentation",
                    "src": "802:264:1",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 110,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "1080:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 103,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1098:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 110,
                        "src": "1090:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1090:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 105,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1113:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 110,
                        "src": "1105:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1105:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1089:32:1"
                  },
                  "returnParameters": {
                    "id": 109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 108,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 110,
                        "src": "1145:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 107,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1145:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1144:9:1"
                  },
                  "scope": 151,
                  "src": "1071:83:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 111,
                    "nodeType": "StructuredDocumentation",
                    "src": "1160:642:1",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 120,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "1816:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 113,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1832:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 120,
                        "src": "1824:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 112,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1824:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 115,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1849:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 120,
                        "src": "1841:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 114,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1841:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1823:33:1"
                  },
                  "returnParameters": {
                    "id": 119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 118,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 120,
                        "src": "1875:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 117,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1875:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1874:6:1"
                  },
                  "scope": 151,
                  "src": "1807:74:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 121,
                    "nodeType": "StructuredDocumentation",
                    "src": "1887:287:1",
                    "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 132,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2188:12:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 123,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2218:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 132,
                        "src": "2210:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 122,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 125,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2240:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 132,
                        "src": "2232:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 124,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2232:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 127,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2260:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 132,
                        "src": "2252:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 126,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2252:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2200:72:1"
                  },
                  "returnParameters": {
                    "id": 131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 130,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 132,
                        "src": "2291:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 129,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2291:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2290:6:1"
                  },
                  "scope": 151,
                  "src": "2179:118:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 133,
                    "nodeType": "StructuredDocumentation",
                    "src": "2303:158:1",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "id": 141,
                  "name": "Transfer",
                  "nameLocation": "2472:8:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 135,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2497:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 141,
                        "src": "2481:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 134,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2481:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 137,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2519:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 141,
                        "src": "2503:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 136,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2503:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 139,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2531:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 141,
                        "src": "2523:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 138,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2523:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2480:57:1"
                  },
                  "src": "2466:72:1"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 142,
                    "nodeType": "StructuredDocumentation",
                    "src": "2544:148:1",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "id": 150,
                  "name": "Approval",
                  "nameLocation": "2703:8:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 144,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2728:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 150,
                        "src": "2712:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2712:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 146,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2751:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 150,
                        "src": "2735:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 145,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2735:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 148,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2768:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 150,
                        "src": "2760:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2711:63:1"
                  },
                  "src": "2697:78:1"
                }
              ],
              "scope": 152,
              "src": "202:2575:1",
              "usedErrors": []
            }
          ],
          "src": "106:2672:1"
        },
        "id": 1
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              1785
            ],
            "ContextUpgradeable": [
              1827
            ],
            "ERC777Upgradeable": [
              1343
            ],
            "IERC1820RegistryUpgradeable": [
              1917
            ],
            "IERC20Upgradeable": [
              151
            ],
            "IERC777RecipientUpgradeable": [
              1363
            ],
            "IERC777SenderUpgradeable": [
              1383
            ],
            "IERC777Upgradeable": [
              1542
            ],
            "Initializable": [
              73
            ]
          },
          "id": 1344,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 153,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:23:2"
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777Upgradeable.sol",
              "file": "./IERC777Upgradeable.sol",
              "id": 154,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 1543,
              "src": "132:34:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777RecipientUpgradeable.sol",
              "file": "./IERC777RecipientUpgradeable.sol",
              "id": 155,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 1364,
              "src": "167:43:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777SenderUpgradeable.sol",
              "file": "./IERC777SenderUpgradeable.sol",
              "id": 156,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 1384,
              "src": "211:40:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
              "file": "../ERC20/IERC20Upgradeable.sol",
              "id": 157,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 152,
              "src": "252:40:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/utils/AddressUpgradeable.sol",
              "file": "../../utils/AddressUpgradeable.sol",
              "id": 158,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 1786,
              "src": "293:44:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/utils/ContextUpgradeable.sol",
              "file": "../../utils/ContextUpgradeable.sol",
              "id": 159,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 1828,
              "src": "338:44:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/utils/introspection/IERC1820RegistryUpgradeable.sol",
              "file": "../../utils/introspection/IERC1820RegistryUpgradeable.sol",
              "id": 160,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 1918,
              "src": "383:67:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol",
              "file": "../../proxy/utils/Initializable.sol",
              "id": 161,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1344,
              "sourceUnit": 74,
              "src": "451:45:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 163,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 73,
                    "src": "1241:13:2"
                  },
                  "id": 164,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1241:13:2"
                },
                {
                  "baseName": {
                    "id": 165,
                    "name": "ContextUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1827,
                    "src": "1256:18:2"
                  },
                  "id": 166,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1256:18:2"
                },
                {
                  "baseName": {
                    "id": 167,
                    "name": "IERC777Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1542,
                    "src": "1276:18:2"
                  },
                  "id": 168,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1276:18:2"
                },
                {
                  "baseName": {
                    "id": 169,
                    "name": "IERC20Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 151,
                    "src": "1296:17:2"
                  },
                  "id": 170,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1296:17:2"
                }
              ],
              "canonicalName": "ERC777Upgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 162,
                "nodeType": "StructuredDocumentation",
                "src": "498:712:2",
                "text": " @dev Implementation of the {IERC777} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n Support for ERC20 is included in this contract, as specified by the EIP: both\n the ERC777 and ERC20 interfaces can be safely used when interacting with it.\n Both {IERC777-Sent} and {IERC20-Transfer} events are emitted on token\n movements.\n Additionally, the {IERC777-granularity} value is hard-coded to `1`, meaning that there\n are no special restrictions in the amount of tokens that created, moved, or\n destroyed. This makes integration with ERC20 applications seamless."
              },
              "fullyImplemented": true,
              "id": 1343,
              "linearizedBaseContracts": [
                1343,
                151,
                1542,
                1827,
                73
              ],
              "name": "ERC777Upgradeable",
              "nameLocation": "1220:17:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 173,
                  "libraryName": {
                    "id": 171,
                    "name": "AddressUpgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1785,
                    "src": "1326:18:2"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1320:37:2",
                  "typeName": {
                    "id": 172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1349:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 179,
                  "mutability": "constant",
                  "name": "_ERC1820_REGISTRY",
                  "nameLocation": "1409:17:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1363:137:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                    "typeString": "contract IERC1820RegistryUpgradeable"
                  },
                  "typeName": {
                    "id": 175,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 174,
                      "name": "IERC1820RegistryUpgradeable",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1917,
                      "src": "1363:27:2"
                    },
                    "referencedDeclaration": 1917,
                    "src": "1363:27:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                      "typeString": "contract IERC1820RegistryUpgradeable"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234",
                        "id": 177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1457:42:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 176,
                      "name": "IERC1820RegistryUpgradeable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1917,
                      "src": "1429:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IERC1820RegistryUpgradeable_$1917_$",
                        "typeString": "type(contract IERC1820RegistryUpgradeable)"
                      }
                    },
                    "id": 178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1429:71:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                      "typeString": "contract IERC1820RegistryUpgradeable"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 183,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1543:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1507:45:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 182,
                    "keyType": {
                      "id": 180,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1515:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1507:27:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 181,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1526:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 185,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nameLocation": "1575:12:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1559:28:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 184,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 187,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1609:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1594:20:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 186,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1594:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 189,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1635:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1620:22:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 188,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 194,
                  "mutability": "constant",
                  "name": "_TOKENS_SENDER_INTERFACE_HASH",
                  "nameLocation": "1674:29:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1649:88:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 190,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1649:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "455243373737546f6b656e7353656e646572",
                        "id": 192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1716:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895",
                          "typeString": "literal_string \"ERC777TokensSender\""
                        },
                        "value": "ERC777TokensSender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895",
                          "typeString": "literal_string \"ERC777TokensSender\""
                        }
                      ],
                      "id": 191,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1706:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1706:31:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 199,
                  "mutability": "constant",
                  "name": "_TOKENS_RECIPIENT_INTERFACE_HASH",
                  "nameLocation": "1768:32:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1743:94:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 195,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1743:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "455243373737546f6b656e73526563697069656e74",
                        "id": 197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1813:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b",
                          "typeString": "literal_string \"ERC777TokensRecipient\""
                        },
                        "value": "ERC777TokensRecipient"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_b281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b",
                          "typeString": "literal_string \"ERC777TokensRecipient\""
                        }
                      ],
                      "id": 196,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1803:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1803:34:2",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 202,
                  "mutability": "mutable",
                  "name": "_defaultOperatorsArray",
                  "nameLocation": "1954:22:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "1936:40:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 200,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1936:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 201,
                    "nodeType": "ArrayTypeName",
                    "src": "1936:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 206,
                  "mutability": "mutable",
                  "name": "_defaultOperators",
                  "nameLocation": "2103:17:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "2070:50:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 205,
                    "keyType": {
                      "id": 203,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2078:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2070:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 204,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2089:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 212,
                  "mutability": "mutable",
                  "name": "_operators",
                  "nameLocation": "2263:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "2210:63:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 211,
                    "keyType": {
                      "id": 207,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2218:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2210:44:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 210,
                      "keyType": {
                        "id": 208,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2237:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2229:24:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 209,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2248:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 218,
                  "mutability": "mutable",
                  "name": "_revokedDefaultOperators",
                  "nameLocation": "2332:24:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "2279:77:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 217,
                    "keyType": {
                      "id": 213,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2287:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2279:44:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 216,
                      "keyType": {
                        "id": 214,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2306:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2298:24:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 215,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2317:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 224,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nameLocation": "2443:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "2387:67:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 223,
                    "keyType": {
                      "id": 219,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2395:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2387:47:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 222,
                      "keyType": {
                        "id": 220,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2414:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2406:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 221,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2425:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 243,
                    "nodeType": "Block",
                    "src": "2690:75:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 238,
                              "name": "name_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 227,
                              "src": "2724:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 239,
                              "name": "symbol_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 229,
                              "src": "2731:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 240,
                              "name": "defaultOperators_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 232,
                              "src": "2740:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "id": 237,
                            "name": "__ERC777_init_unchained",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 322,
                            "src": "2700:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory,address[] memory)"
                            }
                          },
                          "id": 241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2700:58:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 242,
                        "nodeType": "ExpressionStatement",
                        "src": "2700:58:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 225,
                    "nodeType": "StructuredDocumentation",
                    "src": "2461:65:2",
                    "text": " @dev `defaultOperators` may be an empty array."
                  },
                  "id": 244,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 235,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 234,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 57,
                        "src": "2673:16:2"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2673:16:2"
                    }
                  ],
                  "name": "__ERC777_init",
                  "nameLocation": "2540:13:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 227,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "2577:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 244,
                        "src": "2563:19:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 226,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2563:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 229,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "2606:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 244,
                        "src": "2592:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 228,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2592:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 232,
                        "mutability": "mutable",
                        "name": "defaultOperators_",
                        "nameLocation": "2640:17:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 244,
                        "src": "2623:34:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 230,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2623:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 231,
                          "nodeType": "ArrayTypeName",
                          "src": "2623:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2553:110:2"
                  },
                  "returnParameters": {
                    "id": 236,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2690:0:2"
                  },
                  "scope": 1343,
                  "src": "2531:234:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 321,
                    "nodeType": "Block",
                    "src": "2940:490:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 256,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 187,
                            "src": "2950:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 257,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 246,
                            "src": "2958:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2950:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 259,
                        "nodeType": "ExpressionStatement",
                        "src": "2950:13:2"
                      },
                      {
                        "expression": {
                          "id": 262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 260,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 189,
                            "src": "2973:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 261,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 248,
                            "src": "2983:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2973:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 263,
                        "nodeType": "ExpressionStatement",
                        "src": "2973:17:2"
                      },
                      {
                        "expression": {
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 264,
                            "name": "_defaultOperatorsArray",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 202,
                            "src": "3001:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 265,
                            "name": "defaultOperators_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 251,
                            "src": "3026:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "3001:42:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 267,
                        "nodeType": "ExpressionStatement",
                        "src": "3001:42:2"
                      },
                      {
                        "body": {
                          "id": 287,
                          "nodeType": "Block",
                          "src": "3108:71:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 279,
                                    "name": "_defaultOperators",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 206,
                                    "src": "3122:17:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 283,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 280,
                                      "name": "defaultOperators_",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 251,
                                      "src": "3140:17:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 282,
                                    "indexExpression": {
                                      "id": 281,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 269,
                                      "src": "3158:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3140:20:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3122:39:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 284,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3164:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "3122:46:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 286,
                              "nodeType": "ExpressionStatement",
                              "src": "3122:46:2"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 272,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 269,
                            "src": "3073:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 273,
                              "name": "defaultOperators_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 251,
                              "src": "3077:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3077:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3073:28:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 288,
                        "initializationExpression": {
                          "assignments": [
                            269
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 269,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "3066:1:2",
                              "nodeType": "VariableDeclaration",
                              "scope": 288,
                              "src": "3058:9:2",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 268,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3058:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 271,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3070:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3058:13:2"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3103:3:2",
                            "subExpression": {
                              "id": 276,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 269,
                              "src": "3103:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 278,
                          "nodeType": "ExpressionStatement",
                          "src": "3103:3:2"
                        },
                        "nodeType": "ForStatement",
                        "src": "3053:126:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 294,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3270:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                ],
                                "id": 293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3262:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 292,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3262:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3262:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "455243373737546f6b656e",
                                  "id": 297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3287:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054",
                                    "typeString": "literal_string \"ERC777Token\""
                                  },
                                  "value": "ERC777Token"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054",
                                    "typeString": "literal_string \"ERC777Token\""
                                  }
                                ],
                                "id": 296,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "3277:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3277:24:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 301,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3311:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                ],
                                "id": 300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3303:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 299,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3303:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3303:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 289,
                              "name": "_ERC1820_REGISTRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 179,
                              "src": "3220:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                                "typeString": "contract IERC1820RegistryUpgradeable"
                              }
                            },
                            "id": 291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setInterfaceImplementer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1856,
                            "src": "3220:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,bytes32,address) external"
                            }
                          },
                          "id": 303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3220:97:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 304,
                        "nodeType": "ExpressionStatement",
                        "src": "3220:97:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 310,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3377:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                ],
                                "id": 309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3369:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 308,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3369:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3369:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "4552433230546f6b656e",
                                  "id": 313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3394:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a",
                                    "typeString": "literal_string \"ERC20Token\""
                                  },
                                  "value": "ERC20Token"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_aea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a",
                                    "typeString": "literal_string \"ERC20Token\""
                                  }
                                ],
                                "id": 312,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "3384:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3384:23:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 317,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3417:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ERC777Upgradeable_$1343",
                                    "typeString": "contract ERC777Upgradeable"
                                  }
                                ],
                                "id": 316,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3409:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 315,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3409:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3409:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 305,
                              "name": "_ERC1820_REGISTRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 179,
                              "src": "3327:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                                "typeString": "contract IERC1820RegistryUpgradeable"
                              }
                            },
                            "id": 307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setInterfaceImplementer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1856,
                            "src": "3327:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (address,bytes32,address) external"
                            }
                          },
                          "id": 319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3327:96:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 320,
                        "nodeType": "ExpressionStatement",
                        "src": "3327:96:2"
                      }
                    ]
                  },
                  "id": 322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 254,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 253,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 57,
                        "src": "2923:16:2"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2923:16:2"
                    }
                  ],
                  "name": "__ERC777_init_unchained",
                  "nameLocation": "2780:23:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 246,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "2827:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 322,
                        "src": "2813:19:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 245,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2813:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 248,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "2856:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 322,
                        "src": "2842:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 247,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2842:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 251,
                        "mutability": "mutable",
                        "name": "defaultOperators_",
                        "nameLocation": "2890:17:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 322,
                        "src": "2873:34:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 249,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2873:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 250,
                          "nodeType": "ArrayTypeName",
                          "src": "2873:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2803:110:2"
                  },
                  "returnParameters": {
                    "id": 255,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2940:0:2"
                  },
                  "scope": 1343,
                  "src": "2771:659:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    1392
                  ],
                  "body": {
                    "id": 331,
                    "nodeType": "Block",
                    "src": "3553:29:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 329,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 187,
                          "src": "3570:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 328,
                        "id": 330,
                        "nodeType": "Return",
                        "src": "3563:12:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 323,
                    "nodeType": "StructuredDocumentation",
                    "src": "3436:43:2",
                    "text": " @dev See {IERC777-name}."
                  },
                  "functionSelector": "06fdde03",
                  "id": 332,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "3493:4:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 325,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3520:8:2"
                  },
                  "parameters": {
                    "id": 324,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3497:2:2"
                  },
                  "returnParameters": {
                    "id": 328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 327,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 332,
                        "src": "3538:13:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 326,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3538:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3537:15:2"
                  },
                  "scope": 1343,
                  "src": "3484:98:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1398
                  ],
                  "body": {
                    "id": 341,
                    "nodeType": "Block",
                    "src": "3709:31:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 339,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 189,
                          "src": "3726:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 338,
                        "id": 340,
                        "nodeType": "Return",
                        "src": "3719:14:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 333,
                    "nodeType": "StructuredDocumentation",
                    "src": "3588:45:2",
                    "text": " @dev See {IERC777-symbol}."
                  },
                  "functionSelector": "95d89b41",
                  "id": 342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "3647:6:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 335,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3676:8:2"
                  },
                  "parameters": {
                    "id": 334,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3653:2:2"
                  },
                  "returnParameters": {
                    "id": 338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 337,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 342,
                        "src": "3694:13:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 336,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3694:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3693:15:2"
                  },
                  "scope": 1343,
                  "src": "3638:102:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 350,
                    "nodeType": "Block",
                    "src": "3980:26:2",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "3138",
                          "id": 348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3997:2:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "functionReturnParameters": 347,
                        "id": 349,
                        "nodeType": "Return",
                        "src": "3990:9:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 343,
                    "nodeType": "StructuredDocumentation",
                    "src": "3746:173:2",
                    "text": " @dev See {ERC20-decimals}.\n Always returns 18, as per the\n [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility)."
                  },
                  "functionSelector": "313ce567",
                  "id": 351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "3933:8:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 344,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3941:2:2"
                  },
                  "returnParameters": {
                    "id": 347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 346,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 351,
                        "src": "3973:5:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 345,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3973:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3972:7:2"
                  },
                  "scope": 1343,
                  "src": "3924:82:2",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1404
                  ],
                  "body": {
                    "id": 360,
                    "nodeType": "Block",
                    "src": "4191:25:2",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "31",
                          "id": 358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4208:1:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "functionReturnParameters": 357,
                        "id": 359,
                        "nodeType": "Return",
                        "src": "4201:8:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 352,
                    "nodeType": "StructuredDocumentation",
                    "src": "4012:104:2",
                    "text": " @dev See {IERC777-granularity}.\n This implementation always returns `1`."
                  },
                  "functionSelector": "556f0dc7",
                  "id": 361,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "granularity",
                  "nameLocation": "4130:11:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 354,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4164:8:2"
                  },
                  "parameters": {
                    "id": 353,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4141:2:2"
                  },
                  "returnParameters": {
                    "id": 357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 356,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 361,
                        "src": "4182:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4182:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4181:9:2"
                  },
                  "scope": 1343,
                  "src": "4121:95:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    82,
                    1410
                  ],
                  "body": {
                    "id": 372,
                    "nodeType": "Block",
                    "src": "4386:36:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 370,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 185,
                          "src": "4403:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 369,
                        "id": 371,
                        "nodeType": "Return",
                        "src": "4396:19:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 362,
                    "nodeType": "StructuredDocumentation",
                    "src": "4222:50:2",
                    "text": " @dev See {IERC777-totalSupply}."
                  },
                  "functionSelector": "18160ddd",
                  "id": 373,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "4286:11:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 366,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 364,
                        "name": "IERC20Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 151,
                        "src": "4329:17:2"
                      },
                      {
                        "id": 365,
                        "name": "IERC777Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1542,
                        "src": "4348:18:2"
                      }
                    ],
                    "src": "4320:47:2"
                  },
                  "parameters": {
                    "id": 363,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4297:2:2"
                  },
                  "returnParameters": {
                    "id": 369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 368,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 373,
                        "src": "4377:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 367,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4377:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4376:9:2"
                  },
                  "scope": 1343,
                  "src": "4277:145:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    90,
                    1418
                  ],
                  "body": {
                    "id": 388,
                    "nodeType": "Block",
                    "src": "4648:46:2",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 384,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 183,
                            "src": "4665:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 386,
                          "indexExpression": {
                            "id": 385,
                            "name": "tokenHolder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 376,
                            "src": "4675:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4665:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 383,
                        "id": 387,
                        "nodeType": "Return",
                        "src": "4658:29:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 374,
                    "nodeType": "StructuredDocumentation",
                    "src": "4428:89:2",
                    "text": " @dev Returns the amount of tokens owned by an account (`tokenHolder`)."
                  },
                  "functionSelector": "70a08231",
                  "id": 389,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "4531:9:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 380,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 378,
                        "name": "IERC20Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 151,
                        "src": "4591:17:2"
                      },
                      {
                        "id": 379,
                        "name": "IERC777Upgradeable",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1542,
                        "src": "4610:18:2"
                      }
                    ],
                    "src": "4582:47:2"
                  },
                  "parameters": {
                    "id": 377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 376,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "4549:11:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 389,
                        "src": "4541:19:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 375,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4541:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4540:21:2"
                  },
                  "returnParameters": {
                    "id": 383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 382,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 389,
                        "src": "4639:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 381,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4639:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4638:9:2"
                  },
                  "scope": 1343,
                  "src": "4522:172:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1428
                  ],
                  "body": {
                    "id": 410,
                    "nodeType": "Block",
                    "src": "4946:71:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 401,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1812,
                                "src": "4962:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4962:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 403,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 392,
                              "src": "4976:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 404,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 394,
                              "src": "4987:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 405,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 396,
                              "src": "4995:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5001:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "74727565",
                              "id": 407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5005:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 400,
                            "name": "_send",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 974,
                            "src": "4956:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4956:54:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 409,
                        "nodeType": "ExpressionStatement",
                        "src": "4956:54:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 390,
                    "nodeType": "StructuredDocumentation",
                    "src": "4700:119:2",
                    "text": " @dev See {IERC777-send}.\n Also emits a {IERC20-Transfer} event for ERC20 compatibility."
                  },
                  "functionSelector": "9bd9bbc6",
                  "id": 411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "send",
                  "nameLocation": "4833:4:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 398,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4937:8:2"
                  },
                  "parameters": {
                    "id": 397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 392,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4855:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 411,
                        "src": "4847:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4847:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 394,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4882:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 411,
                        "src": "4874:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 393,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4874:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 396,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4911:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 411,
                        "src": "4898:17:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 395,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4898:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4837:84:2"
                  },
                  "returnParameters": {
                    "id": 399,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4946:0:2"
                  },
                  "scope": 1343,
                  "src": "4824:193:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    100
                  ],
                  "body": {
                    "id": 467,
                    "nodeType": "Block",
                    "src": "5340:347:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 423,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 414,
                                "src": "5358:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5379:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5371:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 424,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5371:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5371:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5358:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5383:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a",
                                "typeString": "literal_string \"ERC777: transfer to the zero address\""
                              },
                              "value": "ERC777: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a",
                                "typeString": "literal_string \"ERC777: transfer to the zero address\""
                              }
                            ],
                            "id": 422,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5350:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5350:72:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 431,
                        "nodeType": "ExpressionStatement",
                        "src": "5350:72:2"
                      },
                      {
                        "assignments": [
                          433
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 433,
                            "mutability": "mutable",
                            "name": "from",
                            "nameLocation": "5441:4:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 467,
                            "src": "5433:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 432,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5433:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 436,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 434,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1812,
                            "src": "5448:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5448:12:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5433:27:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 438,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "5489:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 439,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "5495:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 440,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 414,
                              "src": "5501:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 441,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 416,
                              "src": "5512:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5520:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5524:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 437,
                            "name": "_callTokensToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1223,
                            "src": "5471:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5471:56:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 445,
                        "nodeType": "ExpressionStatement",
                        "src": "5471:56:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 447,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "5544:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 448,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "5550:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 449,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 414,
                              "src": "5556:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 450,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 416,
                              "src": "5567:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5575:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5579:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 446,
                            "name": "_move",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1133,
                            "src": "5538:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5538:44:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 454,
                        "nodeType": "ExpressionStatement",
                        "src": "5538:44:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 456,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "5613:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 457,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "5619:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 458,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 414,
                              "src": "5625:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 459,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 416,
                              "src": "5636:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5644:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5648:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5652:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 455,
                            "name": "_callTokensReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "5593:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5593:65:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 464,
                        "nodeType": "ExpressionStatement",
                        "src": "5593:65:2"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5676:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 421,
                        "id": 466,
                        "nodeType": "Return",
                        "src": "5669:11:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 412,
                    "nodeType": "StructuredDocumentation",
                    "src": "5023:220:2",
                    "text": " @dev See {IERC20-transfer}.\n Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient}\n interface if it is a contract.\n Also emits a {Sent} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "5257:8:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 418,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5316:8:2"
                  },
                  "parameters": {
                    "id": 417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 414,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "5274:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 468,
                        "src": "5266:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 413,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5266:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 416,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5293:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 468,
                        "src": "5285:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5285:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5265:35:2"
                  },
                  "returnParameters": {
                    "id": 421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 420,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 468,
                        "src": "5334:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 419,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5334:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5333:6:2"
                  },
                  "scope": 1343,
                  "src": "5248:439:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1436
                  ],
                  "body": {
                    "id": 485,
                    "nodeType": "Block",
                    "src": "5890:54:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 478,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1812,
                                "src": "5906:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5906:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 480,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 471,
                              "src": "5920:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 481,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 473,
                              "src": "5928:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5934:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 477,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1067,
                            "src": "5900:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5900:37:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 484,
                        "nodeType": "ExpressionStatement",
                        "src": "5900:37:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 469,
                    "nodeType": "StructuredDocumentation",
                    "src": "5693:119:2",
                    "text": " @dev See {IERC777-burn}.\n Also emits a {IERC20-Transfer} event for ERC20 compatibility."
                  },
                  "functionSelector": "fe9d9303",
                  "id": 486,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "5826:4:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 475,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5881:8:2"
                  },
                  "parameters": {
                    "id": 474,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 471,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5839:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 486,
                        "src": "5831:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 470,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5831:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 473,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5860:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 486,
                        "src": "5847:17:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 472,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5847:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5830:35:2"
                  },
                  "returnParameters": {
                    "id": 476,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5890:0:2"
                  },
                  "scope": 1343,
                  "src": "5817:127:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1446
                  ],
                  "body": {
                    "id": 519,
                    "nodeType": "Block",
                    "src": "6113:205:2",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 497,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 489,
                                "src": "6142:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 498,
                                "name": "tokenHolder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 491,
                                "src": "6154:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6142:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 500,
                                      "name": "_defaultOperators",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 206,
                                      "src": "6182:17:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                        "typeString": "mapping(address => bool)"
                                      }
                                    },
                                    "id": 502,
                                    "indexExpression": {
                                      "id": 501,
                                      "name": "operator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 489,
                                      "src": "6200:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6182:27:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "id": 508,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "6213:48:2",
                                    "subExpression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 503,
                                          "name": "_revokedDefaultOperators",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 218,
                                          "src": "6214:24:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                            "typeString": "mapping(address => mapping(address => bool))"
                                          }
                                        },
                                        "id": 505,
                                        "indexExpression": {
                                          "id": 504,
                                          "name": "tokenHolder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 491,
                                          "src": "6239:11:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6214:37:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                          "typeString": "mapping(address => bool)"
                                        }
                                      },
                                      "id": 507,
                                      "indexExpression": {
                                        "id": 506,
                                        "name": "operator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 489,
                                        "src": "6252:8:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6214:47:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "6182:79:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 510,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6181:81:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6142:120:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 512,
                                "name": "_operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 212,
                                "src": "6278:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 514,
                              "indexExpression": {
                                "id": 513,
                                "name": "tokenHolder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 491,
                                "src": "6289:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6278:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 516,
                            "indexExpression": {
                              "id": 515,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 489,
                              "src": "6302:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6278:33:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6142:169:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 496,
                        "id": 518,
                        "nodeType": "Return",
                        "src": "6123:188:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 487,
                    "nodeType": "StructuredDocumentation",
                    "src": "5950:52:2",
                    "text": " @dev See {IERC777-isOperatorFor}."
                  },
                  "functionSelector": "d95b6371",
                  "id": 520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isOperatorFor",
                  "nameLocation": "6016:13:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 493,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6089:8:2"
                  },
                  "parameters": {
                    "id": 492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 489,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6038:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "6030:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 488,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6030:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 491,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "6056:11:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "6048:19:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6048:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6029:39:2"
                  },
                  "returnParameters": {
                    "id": 496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 495,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "6107:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 494,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6107:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6106:6:2"
                  },
                  "scope": 1343,
                  "src": "6007:311:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1452
                  ],
                  "body": {
                    "id": 564,
                    "nodeType": "Block",
                    "src": "6454:343:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 528,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1812,
                                  "src": "6472:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6472:12:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 530,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 523,
                                "src": "6488:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6472:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a20617574686f72697a696e672073656c66206173206f70657261746f72",
                              "id": 532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6498:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c",
                                "typeString": "literal_string \"ERC777: authorizing self as operator\""
                              },
                              "value": "ERC777: authorizing self as operator"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4682b297c30e70ba17ae545f9c27f948e3607c0cc7dd469250dfcf8daa94218c",
                                "typeString": "literal_string \"ERC777: authorizing self as operator\""
                              }
                            ],
                            "id": 527,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6464:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6464:73:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 534,
                        "nodeType": "ExpressionStatement",
                        "src": "6464:73:2"
                      },
                      {
                        "condition": {
                          "baseExpression": {
                            "id": 535,
                            "name": "_defaultOperators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 206,
                            "src": "6552:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 537,
                          "indexExpression": {
                            "id": 536,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 523,
                            "src": "6570:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6552:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 556,
                          "nodeType": "Block",
                          "src": "6667:66:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 547,
                                      "name": "_operators",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 212,
                                      "src": "6681:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                        "typeString": "mapping(address => mapping(address => bool))"
                                      }
                                    },
                                    "id": 551,
                                    "indexExpression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 548,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1812,
                                        "src": "6692:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                          "typeString": "function () view returns (address)"
                                        }
                                      },
                                      "id": 549,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6692:12:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6681:24:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 552,
                                  "indexExpression": {
                                    "id": 550,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 523,
                                    "src": "6706:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6681:34:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 553,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6718:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "6681:41:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 555,
                              "nodeType": "ExpressionStatement",
                              "src": "6681:41:2"
                            }
                          ]
                        },
                        "id": 557,
                        "nodeType": "IfStatement",
                        "src": "6548:185:2",
                        "trueBody": {
                          "id": 546,
                          "nodeType": "Block",
                          "src": "6581:80:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "6595:55:2",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 538,
                                      "name": "_revokedDefaultOperators",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 218,
                                      "src": "6602:24:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                        "typeString": "mapping(address => mapping(address => bool))"
                                      }
                                    },
                                    "id": 541,
                                    "indexExpression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 539,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1812,
                                        "src": "6627:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                          "typeString": "function () view returns (address)"
                                        }
                                      },
                                      "id": 540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6627:12:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6602:38:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 543,
                                  "indexExpression": {
                                    "id": 542,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 523,
                                    "src": "6641:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6602:48:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 545,
                              "nodeType": "ExpressionStatement",
                              "src": "6595:55:2"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 559,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 523,
                              "src": "6767:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 560,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1812,
                                "src": "6777:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6777:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 558,
                            "name": "AuthorizedOperator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1535,
                            "src": "6748:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6748:42:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 563,
                        "nodeType": "EmitStatement",
                        "src": "6743:47:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 521,
                    "nodeType": "StructuredDocumentation",
                    "src": "6324:56:2",
                    "text": " @dev See {IERC777-authorizeOperator}."
                  },
                  "functionSelector": "959b8c3f",
                  "id": 565,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "authorizeOperator",
                  "nameLocation": "6394:17:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 525,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6445:8:2"
                  },
                  "parameters": {
                    "id": 524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 523,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6420:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 565,
                        "src": "6412:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6412:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6411:18:2"
                  },
                  "returnParameters": {
                    "id": 526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6454:0:2"
                  },
                  "scope": 1343,
                  "src": "6385:412:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1458
                  ],
                  "body": {
                    "id": 609,
                    "nodeType": "Block",
                    "src": "6927:337:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 573,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 568,
                                "src": "6945:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 574,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1812,
                                  "src": "6957:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6957:12:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6945:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a207265766f6b696e672073656c66206173206f70657261746f72",
                              "id": 577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6971:35:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5",
                                "typeString": "literal_string \"ERC777: revoking self as operator\""
                              },
                              "value": "ERC777: revoking self as operator"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_67ce503bd3a359eb530c6f3a909afa9e71899e0352d883198e721fd5fceefab5",
                                "typeString": "literal_string \"ERC777: revoking self as operator\""
                              }
                            ],
                            "id": 572,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6937:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6937:70:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 579,
                        "nodeType": "ExpressionStatement",
                        "src": "6937:70:2"
                      },
                      {
                        "condition": {
                          "baseExpression": {
                            "id": 580,
                            "name": "_defaultOperators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 206,
                            "src": "7022:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 582,
                          "indexExpression": {
                            "id": 581,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 568,
                            "src": "7040:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7022:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 601,
                          "nodeType": "Block",
                          "src": "7137:66:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "7151:41:2",
                                "subExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 593,
                                      "name": "_operators",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 212,
                                      "src": "7158:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                        "typeString": "mapping(address => mapping(address => bool))"
                                      }
                                    },
                                    "id": 596,
                                    "indexExpression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 594,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1812,
                                        "src": "7169:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                          "typeString": "function () view returns (address)"
                                        }
                                      },
                                      "id": 595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7169:12:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7158:24:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 598,
                                  "indexExpression": {
                                    "id": 597,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 568,
                                    "src": "7183:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7158:34:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 600,
                              "nodeType": "ExpressionStatement",
                              "src": "7151:41:2"
                            }
                          ]
                        },
                        "id": 602,
                        "nodeType": "IfStatement",
                        "src": "7018:185:2",
                        "trueBody": {
                          "id": 592,
                          "nodeType": "Block",
                          "src": "7051:80:2",
                          "statements": [
                            {
                              "expression": {
                                "id": 590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 583,
                                      "name": "_revokedDefaultOperators",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 218,
                                      "src": "7065:24:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                        "typeString": "mapping(address => mapping(address => bool))"
                                      }
                                    },
                                    "id": 587,
                                    "indexExpression": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 584,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1812,
                                        "src": "7090:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                          "typeString": "function () view returns (address)"
                                        }
                                      },
                                      "id": 585,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7090:12:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7065:38:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 588,
                                  "indexExpression": {
                                    "id": 586,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 568,
                                    "src": "7104:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7065:48:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 589,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7116:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "7065:55:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 591,
                              "nodeType": "ExpressionStatement",
                              "src": "7065:55:2"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 604,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 568,
                              "src": "7234:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 605,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1812,
                                "src": "7244:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7244:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 603,
                            "name": "RevokedOperator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1541,
                            "src": "7218:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7218:39:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 608,
                        "nodeType": "EmitStatement",
                        "src": "7213:44:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 566,
                    "nodeType": "StructuredDocumentation",
                    "src": "6803:53:2",
                    "text": " @dev See {IERC777-revokeOperator}."
                  },
                  "functionSelector": "fad8b32a",
                  "id": 610,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeOperator",
                  "nameLocation": "6870:14:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 570,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6918:8:2"
                  },
                  "parameters": {
                    "id": 569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 568,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6893:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 610,
                        "src": "6885:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 567,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6885:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6884:18:2"
                  },
                  "returnParameters": {
                    "id": 571,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6927:0:2"
                  },
                  "scope": 1343,
                  "src": "6861:403:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1465
                  ],
                  "body": {
                    "id": 620,
                    "nodeType": "Block",
                    "src": "7414:46:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 618,
                          "name": "_defaultOperatorsArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 202,
                          "src": "7431:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "functionReturnParameters": 617,
                        "id": 619,
                        "nodeType": "Return",
                        "src": "7424:29:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 611,
                    "nodeType": "StructuredDocumentation",
                    "src": "7270:55:2",
                    "text": " @dev See {IERC777-defaultOperators}."
                  },
                  "functionSelector": "06e48538",
                  "id": 621,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultOperators",
                  "nameLocation": "7339:16:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 613,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7378:8:2"
                  },
                  "parameters": {
                    "id": 612,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7355:2:2"
                  },
                  "returnParameters": {
                    "id": 617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 616,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 621,
                        "src": "7396:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 614,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7396:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 615,
                          "nodeType": "ArrayTypeName",
                          "src": "7396:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7395:18:2"
                  },
                  "scope": 1343,
                  "src": "7330:130:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1479
                  ],
                  "body": {
                    "id": 654,
                    "nodeType": "Block",
                    "src": "7768:177:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 638,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1812,
                                    "src": "7800:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7800:12:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 640,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 624,
                                  "src": "7814:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 637,
                                "name": "isOperatorFor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 520,
                                "src": "7786:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7786:35:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c646572",
                              "id": 642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7823:46:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235",
                                "typeString": "literal_string \"ERC777: caller is not an operator for holder\""
                              },
                              "value": "ERC777: caller is not an operator for holder"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235",
                                "typeString": "literal_string \"ERC777: caller is not an operator for holder\""
                              }
                            ],
                            "id": 636,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7778:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7778:92:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 644,
                        "nodeType": "ExpressionStatement",
                        "src": "7778:92:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 646,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "7886:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 647,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 626,
                              "src": "7894:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 648,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 628,
                              "src": "7905:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 649,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 630,
                              "src": "7913:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 650,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 632,
                              "src": "7919:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7933:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 645,
                            "name": "_send",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 974,
                            "src": "7880:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7880:58:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 653,
                        "nodeType": "ExpressionStatement",
                        "src": "7880:58:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 622,
                    "nodeType": "StructuredDocumentation",
                    "src": "7466:108:2",
                    "text": " @dev See {IERC777-operatorSend}.\n Emits {Sent} and {IERC20-Transfer} events."
                  },
                  "functionSelector": "62ad1b83",
                  "id": 655,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "operatorSend",
                  "nameLocation": "7588:12:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 634,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7759:8:2"
                  },
                  "parameters": {
                    "id": 633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 624,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "7618:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 655,
                        "src": "7610:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 623,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7610:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 626,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "7642:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 655,
                        "src": "7634:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7634:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 628,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7669:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 655,
                        "src": "7661:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7661:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 630,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7698:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 655,
                        "src": "7685:17:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 629,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7685:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 632,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "7725:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 655,
                        "src": "7712:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 631,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7712:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7600:143:2"
                  },
                  "returnParameters": {
                    "id": 635,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7768:0:2"
                  },
                  "scope": 1343,
                  "src": "7579:366:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1491
                  ],
                  "body": {
                    "id": 684,
                    "nodeType": "Block",
                    "src": "8229:162:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 670,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1812,
                                    "src": "8261:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8261:12:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 672,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 658,
                                  "src": "8275:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 669,
                                "name": "isOperatorFor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 520,
                                "src": "8247:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address) view returns (bool)"
                                }
                              },
                              "id": 673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8247:36:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c646572",
                              "id": 674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8285:46:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235",
                                "typeString": "literal_string \"ERC777: caller is not an operator for holder\""
                              },
                              "value": "ERC777: caller is not an operator for holder"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d0e912496dc7a0050c7f3e14272d4929a90a242e3fdaef730410cdf35f965235",
                                "typeString": "literal_string \"ERC777: caller is not an operator for holder\""
                              }
                            ],
                            "id": 668,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8239:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8239:93:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 676,
                        "nodeType": "ExpressionStatement",
                        "src": "8239:93:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 678,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "8348:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 679,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "8357:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 680,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 662,
                              "src": "8365:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 681,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 664,
                              "src": "8371:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 677,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1067,
                            "src": "8342:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8342:42:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 683,
                        "nodeType": "ExpressionStatement",
                        "src": "8342:42:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 656,
                    "nodeType": "StructuredDocumentation",
                    "src": "7951:110:2",
                    "text": " @dev See {IERC777-operatorBurn}.\n Emits {Burned} and {IERC20-Transfer} events."
                  },
                  "functionSelector": "fc673c4f",
                  "id": 685,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "operatorBurn",
                  "nameLocation": "8075:12:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 666,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8220:8:2"
                  },
                  "parameters": {
                    "id": 665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 658,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "8105:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "8097:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8097:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 660,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8130:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "8122:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8122:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 662,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8159:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "8146:17:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 661,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8146:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 664,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "8186:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 685,
                        "src": "8173:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8173:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8087:117:2"
                  },
                  "returnParameters": {
                    "id": 667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8229:0:2"
                  },
                  "scope": 1343,
                  "src": "8066:325:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    110
                  ],
                  "body": {
                    "id": 702,
                    "nodeType": "Block",
                    "src": "8729:52:2",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 696,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 224,
                              "src": "8746:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 698,
                            "indexExpression": {
                              "id": 697,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 688,
                              "src": "8758:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8746:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 700,
                          "indexExpression": {
                            "id": 699,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 690,
                            "src": "8766:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8746:28:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 695,
                        "id": 701,
                        "nodeType": "Return",
                        "src": "8739:35:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 686,
                    "nodeType": "StructuredDocumentation",
                    "src": "8397:228:2",
                    "text": " @dev See {IERC20-allowance}.\n Note that operator and allowance concepts are orthogonal: operators may\n not have allowance, and accounts with allowance may not be operators\n themselves."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 703,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "8639:9:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 692,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8702:8:2"
                  },
                  "parameters": {
                    "id": 691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 688,
                        "mutability": "mutable",
                        "name": "holder",
                        "nameLocation": "8657:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 703,
                        "src": "8649:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8649:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 690,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "8673:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 703,
                        "src": "8665:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 689,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8665:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8648:33:2"
                  },
                  "returnParameters": {
                    "id": 695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 694,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 703,
                        "src": "8720:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8720:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8719:9:2"
                  },
                  "scope": 1343,
                  "src": "8630:151:2",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    120
                  ],
                  "body": {
                    "id": 727,
                    "nodeType": "Block",
                    "src": "9176:109:2",
                    "statements": [
                      {
                        "assignments": [
                          715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 715,
                            "mutability": "mutable",
                            "name": "holder",
                            "nameLocation": "9194:6:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 727,
                            "src": "9186:14:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 714,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9186:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 718,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 716,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1812,
                            "src": "9203:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9203:12:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9186:29:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 720,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 715,
                              "src": "9234:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 721,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 706,
                              "src": "9242:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 722,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 708,
                              "src": "9251:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 719,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1178,
                            "src": "9225:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9225:32:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 724,
                        "nodeType": "ExpressionStatement",
                        "src": "9225:32:2"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9274:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 713,
                        "id": 726,
                        "nodeType": "Return",
                        "src": "9267:11:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 704,
                    "nodeType": "StructuredDocumentation",
                    "src": "8787:296:2",
                    "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Note that accounts cannot have allowance issued by their operators."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "9097:7:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 710,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9152:8:2"
                  },
                  "parameters": {
                    "id": 709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 706,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "9113:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "9105:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9105:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 708,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9130:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "9122:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9122:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9104:32:2"
                  },
                  "returnParameters": {
                    "id": 713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 712,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "9170:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 711,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9170:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9169:6:2"
                  },
                  "scope": 1343,
                  "src": "9088:197:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    132
                  ],
                  "body": {
                    "id": 802,
                    "nodeType": "Block",
                    "src": "9909:497:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 742,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 733,
                                "src": "9927:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 745,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9948:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9940:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 743,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9940:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9940:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9927:23:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9952:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a",
                                "typeString": "literal_string \"ERC777: transfer to the zero address\""
                              },
                              "value": "ERC777: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad1e0a820fe2a50167f341463ad5f6754fad4cf77d809141bc408c516e69c59a",
                                "typeString": "literal_string \"ERC777: transfer to the zero address\""
                              }
                            ],
                            "id": 741,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9919:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9919:72:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 750,
                        "nodeType": "ExpressionStatement",
                        "src": "9919:72:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 752,
                                "name": "holder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 731,
                                "src": "10009:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10027:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10019:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 753,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10019:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10019:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10009:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                              "id": 758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10031:40:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a",
                                "typeString": "literal_string \"ERC777: transfer from the zero address\""
                              },
                              "value": "ERC777: transfer from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e354b0408f2a1e89707ec9f6aaa5427ceb97704ace0785924c7421e8f577dc7a",
                                "typeString": "literal_string \"ERC777: transfer from the zero address\""
                              }
                            ],
                            "id": 751,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10001:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10001:71:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 760,
                        "nodeType": "ExpressionStatement",
                        "src": "10001:71:2"
                      },
                      {
                        "assignments": [
                          762
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 762,
                            "mutability": "mutable",
                            "name": "spender",
                            "nameLocation": "10091:7:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 802,
                            "src": "10083:15:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 761,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10083:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 765,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 763,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1812,
                            "src": "10101:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10101:12:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10083:30:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 767,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 762,
                              "src": "10142:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 768,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 731,
                              "src": "10151:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 769,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 733,
                              "src": "10159:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 770,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 735,
                              "src": "10170:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10178:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10182:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 766,
                            "name": "_callTokensToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1223,
                            "src": "10124:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10124:61:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 774,
                        "nodeType": "ExpressionStatement",
                        "src": "10124:61:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 776,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 731,
                              "src": "10212:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 777,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 762,
                              "src": "10220:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 778,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 735,
                              "src": "10229:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 775,
                            "name": "_spendAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1324,
                            "src": "10196:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10196:40:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 780,
                        "nodeType": "ExpressionStatement",
                        "src": "10196:40:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 782,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 762,
                              "src": "10253:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 783,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 731,
                              "src": "10262:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 784,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 733,
                              "src": "10270:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 785,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 735,
                              "src": "10281:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10289:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10293:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 781,
                            "name": "_move",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1133,
                            "src": "10247:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10247:49:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 789,
                        "nodeType": "ExpressionStatement",
                        "src": "10247:49:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 791,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 762,
                              "src": "10327:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 792,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 731,
                              "src": "10336:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 793,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 733,
                              "src": "10344:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 794,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 735,
                              "src": "10355:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10363:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10367:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10371:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 790,
                            "name": "_callTokensReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "10307:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10307:70:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 799,
                        "nodeType": "ExpressionStatement",
                        "src": "10307:70:2"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10395:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 740,
                        "id": 801,
                        "nodeType": "Return",
                        "src": "10388:11:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 729,
                    "nodeType": "StructuredDocumentation",
                    "src": "9291:471:2",
                    "text": " @dev See {IERC20-transferFrom}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Note that operator and allowance concepts are orthogonal: operators cannot\n call `transferFrom` (unless they have allowance), and accounts with\n allowance cannot call `operatorSend` (unless they are operators).\n Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events."
                  },
                  "functionSelector": "23b872dd",
                  "id": 803,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "9776:12:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 737,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9885:8:2"
                  },
                  "parameters": {
                    "id": 736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 731,
                        "mutability": "mutable",
                        "name": "holder",
                        "nameLocation": "9806:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 803,
                        "src": "9798:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9798:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 733,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "9830:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 803,
                        "src": "9822:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 732,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9822:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 735,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "9857:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 803,
                        "src": "9849:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9849:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9788:81:2"
                  },
                  "returnParameters": {
                    "id": 740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 739,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 803,
                        "src": "9903:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 738,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9903:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9902:6:2"
                  },
                  "scope": 1343,
                  "src": "9767:639:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 823,
                    "nodeType": "Block",
                    "src": "11129:69:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 816,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 806,
                              "src": "11145:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 817,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 808,
                              "src": "11154:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 818,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 810,
                              "src": "11162:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 819,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 812,
                              "src": "11172:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11186:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 815,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              824,
                              904
                            ],
                            "referencedDeclaration": 904,
                            "src": "11139:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11139:52:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 822,
                        "nodeType": "ExpressionStatement",
                        "src": "11139:52:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 804,
                    "nodeType": "StructuredDocumentation",
                    "src": "10412:559:2",
                    "text": " @dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n If a send hook is registered for `account`, the corresponding function\n will be called with `operator`, `data` and `operatorData`.\n See {IERC777Sender} and {IERC777Recipient}.\n Emits {Minted} and {IERC20-Transfer} events.\n Requirements\n - `account` cannot be the zero address.\n - if `account` is a contract, it must implement the {IERC777Recipient}\n interface."
                  },
                  "id": 824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "10985:5:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 813,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 806,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "11008:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 824,
                        "src": "11000:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11000:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 808,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "11033:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 824,
                        "src": "11025:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 807,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11025:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 810,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "11062:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 824,
                        "src": "11049:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 809,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11049:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 812,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "11093:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 824,
                        "src": "11080:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 811,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11080:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10990:121:2"
                  },
                  "returnParameters": {
                    "id": 814,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11129:0:2"
                  },
                  "scope": 1343,
                  "src": "10976:222:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 903,
                    "nodeType": "Block",
                    "src": "12007:539:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 839,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 827,
                                "src": "12025:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12044:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12036:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 840,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12036:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12036:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "12025:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12048:34:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080",
                                "typeString": "literal_string \"ERC777: mint to the zero address\""
                              },
                              "value": "ERC777: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8ce4f759423d0a519cbdf8529f47ad13e03ab9baec6702bc39e1fd5147c7e080",
                                "typeString": "literal_string \"ERC777: mint to the zero address\""
                              }
                            ],
                            "id": 838,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12017:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12017:66:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 847,
                        "nodeType": "ExpressionStatement",
                        "src": "12017:66:2"
                      },
                      {
                        "assignments": [
                          849
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 849,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "12102:8:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 903,
                            "src": "12094:16:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 848,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12094:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 852,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 850,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1812,
                            "src": "12113:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12113:12:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12094:31:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 854,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 849,
                              "src": "12157:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12175:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12167:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 855,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12167:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12167:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 859,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "12179:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 860,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 829,
                              "src": "12188:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 853,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1337,
                            "src": "12136:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12136:59:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 862,
                        "nodeType": "ExpressionStatement",
                        "src": "12136:59:2"
                      },
                      {
                        "expression": {
                          "id": 865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 863,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 185,
                            "src": "12240:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 864,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 829,
                            "src": "12256:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12240:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 866,
                        "nodeType": "ExpressionStatement",
                        "src": "12240:22:2"
                      },
                      {
                        "expression": {
                          "id": 871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 867,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 183,
                              "src": "12272:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 869,
                            "indexExpression": {
                              "id": 868,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "12282:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12272:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 870,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 829,
                            "src": "12294:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12272:28:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 872,
                        "nodeType": "ExpressionStatement",
                        "src": "12272:28:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 874,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 849,
                              "src": "12331:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12349:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12341:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 875,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12341:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12341:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 879,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "12353:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 880,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 829,
                              "src": "12362:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 881,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 831,
                              "src": "12370:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 882,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 833,
                              "src": "12380:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 883,
                              "name": "requireReceptionAck",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 835,
                              "src": "12394:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 873,
                            "name": "_callTokensReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "12311:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12311:103:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 885,
                        "nodeType": "ExpressionStatement",
                        "src": "12311:103:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 887,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 849,
                              "src": "12437:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 888,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "12447:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 889,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 829,
                              "src": "12456:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 890,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 831,
                              "src": "12464:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 891,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 833,
                              "src": "12474:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 886,
                            "name": "Minted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1517,
                            "src": "12430:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12430:57:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 893,
                        "nodeType": "EmitStatement",
                        "src": "12425:62:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12519:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12511:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 895,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12511:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12511:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 899,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "12523:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 900,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 829,
                              "src": "12532:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 894,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "12502:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12502:37:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 902,
                        "nodeType": "EmitStatement",
                        "src": "12497:42:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 825,
                    "nodeType": "StructuredDocumentation",
                    "src": "11204:611:2",
                    "text": " @dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n If `requireReceptionAck` is set to true, and if a send hook is\n registered for `account`, the corresponding function will be called with\n `operator`, `data` and `operatorData`.\n See {IERC777Sender} and {IERC777Recipient}.\n Emits {Minted} and {IERC20-Transfer} events.\n Requirements\n - `account` cannot be the zero address.\n - if `account` is a contract, it must implement the {IERC777Recipient}\n interface."
                  },
                  "id": 904,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "11829:5:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 827,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "11852:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 904,
                        "src": "11844:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 826,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11844:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 829,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "11877:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 904,
                        "src": "11869:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 828,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11869:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 831,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "11906:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 904,
                        "src": "11893:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 830,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11893:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 833,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "11937:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 904,
                        "src": "11924:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 832,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11924:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 835,
                        "mutability": "mutable",
                        "name": "requireReceptionAck",
                        "nameLocation": "11964:19:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 904,
                        "src": "11959:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 834,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11959:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11834:155:2"
                  },
                  "returnParameters": {
                    "id": 837,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12007:0:2"
                  },
                  "scope": 1343,
                  "src": "11820:726:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 973,
                    "nodeType": "Block",
                    "src": "13226:446:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 921,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 907,
                                "src": "13244:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 924,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13260:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13252:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 922,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13252:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13252:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13244:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a2073656e642066726f6d20746865207a65726f2061646472657373",
                              "id": 927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13264:36:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401",
                                "typeString": "literal_string \"ERC777: send from the zero address\""
                              },
                              "value": "ERC777: send from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_14f76295ace7a8386ec01140ee9cd688544ad4113a371d47f5a5fb46ac01c401",
                                "typeString": "literal_string \"ERC777: send from the zero address\""
                              }
                            ],
                            "id": 920,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13236:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13236:65:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 929,
                        "nodeType": "ExpressionStatement",
                        "src": "13236:65:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 931,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 909,
                                "src": "13319:2:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13333:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 933,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13325:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 932,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13325:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13325:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13319:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a2073656e6420746f20746865207a65726f2061646472657373",
                              "id": 937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13337:34:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3",
                                "typeString": "literal_string \"ERC777: send to the zero address\""
                              },
                              "value": "ERC777: send to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ed80ea5132cda6a72ccf7da466e28cf5f3b5c217583b1b7e92c137a9f3d6b4c3",
                                "typeString": "literal_string \"ERC777: send to the zero address\""
                              }
                            ],
                            "id": 930,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13311:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13311:61:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 939,
                        "nodeType": "ExpressionStatement",
                        "src": "13311:61:2"
                      },
                      {
                        "assignments": [
                          941
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 941,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "13391:8:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 973,
                            "src": "13383:16:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 940,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13383:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 944,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 942,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1812,
                            "src": "13402:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13402:12:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13383:31:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 946,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 941,
                              "src": "13443:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 947,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 907,
                              "src": "13453:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 948,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 909,
                              "src": "13459:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 949,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 911,
                              "src": "13463:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 950,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 913,
                              "src": "13471:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 951,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 915,
                              "src": "13481:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 945,
                            "name": "_callTokensToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1223,
                            "src": "13425:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13425:69:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 953,
                        "nodeType": "ExpressionStatement",
                        "src": "13425:69:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 955,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 941,
                              "src": "13511:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 956,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 907,
                              "src": "13521:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 957,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 909,
                              "src": "13527:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 958,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 911,
                              "src": "13531:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 959,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 913,
                              "src": "13539:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 960,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 915,
                              "src": "13549:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 954,
                            "name": "_move",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1133,
                            "src": "13505:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13505:57:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 962,
                        "nodeType": "ExpressionStatement",
                        "src": "13505:57:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 964,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 941,
                              "src": "13593:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 965,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 907,
                              "src": "13603:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 966,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 909,
                              "src": "13609:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 967,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 911,
                              "src": "13613:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 968,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 913,
                              "src": "13621:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 969,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 915,
                              "src": "13631:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 970,
                              "name": "requireReceptionAck",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "13645:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 963,
                            "name": "_callTokensReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "13573:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13573:92:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 972,
                        "nodeType": "ExpressionStatement",
                        "src": "13573:92:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 905,
                    "nodeType": "StructuredDocumentation",
                    "src": "12552:465:2",
                    "text": " @dev Send tokens\n @param from address token holder address\n @param to address recipient address\n @param amount uint256 amount of tokens to transfer\n @param userData bytes extra information provided by the token holder (if any)\n @param operatorData bytes extra information provided by the operator (if any)\n @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient"
                  },
                  "id": 974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_send",
                  "nameLocation": "13031:5:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 907,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "13054:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 974,
                        "src": "13046:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 906,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13046:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 909,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "13076:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 974,
                        "src": "13068:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13068:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 911,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "13096:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 974,
                        "src": "13088:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 910,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13088:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 913,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "13125:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 974,
                        "src": "13112:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 912,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "13112:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 915,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "13156:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 974,
                        "src": "13143:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 914,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "13143:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 917,
                        "mutability": "mutable",
                        "name": "requireReceptionAck",
                        "nameLocation": "13183:19:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 974,
                        "src": "13178:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 916,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13178:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13036:172:2"
                  },
                  "returnParameters": {
                    "id": 919,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13226:0:2"
                  },
                  "scope": 1343,
                  "src": "13022:650:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1066,
                    "nodeType": "Block",
                    "src": "14123:665:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 987,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 977,
                                "src": "14141:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 990,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14157:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14149:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 988,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14149:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14149:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14141:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14161:36:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c",
                                "typeString": "literal_string \"ERC777: burn from the zero address\""
                              },
                              "value": "ERC777: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_37e8d125f24ef45023ef8033e82467f588cec434263b3a6b98bcdb3eca4b768c",
                                "typeString": "literal_string \"ERC777: burn from the zero address\""
                              }
                            ],
                            "id": 986,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14133:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14133:65:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 995,
                        "nodeType": "ExpressionStatement",
                        "src": "14133:65:2"
                      },
                      {
                        "assignments": [
                          997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 997,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "14217:8:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 1066,
                            "src": "14209:16:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 996,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14209:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1000,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 998,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1812,
                            "src": "14228:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14228:12:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14209:31:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1002,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 997,
                              "src": "14269:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1003,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 977,
                              "src": "14279:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14293:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14285:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1004,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14285:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14285:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1008,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "14297:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1009,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 981,
                              "src": "14305:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1010,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 983,
                              "src": "14311:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1001,
                            "name": "_callTokensToSend",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1223,
                            "src": "14251:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 1011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14251:73:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1012,
                        "nodeType": "ExpressionStatement",
                        "src": "14251:73:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1014,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 997,
                              "src": "14356:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1015,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 977,
                              "src": "14366:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1018,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14380:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14372:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1016,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14372:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14372:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1020,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "14384:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1013,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1337,
                            "src": "14335:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14335:56:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1022,
                        "nodeType": "ExpressionStatement",
                        "src": "14335:56:2"
                      },
                      {
                        "assignments": [
                          1024
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1024,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "14444:11:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 1066,
                            "src": "14436:19:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1023,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14436:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1028,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1025,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 183,
                            "src": "14458:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1027,
                          "indexExpression": {
                            "id": 1026,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 977,
                            "src": "14468:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14458:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14436:37:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1030,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1024,
                                "src": "14491:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1031,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 979,
                                "src": "14506:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14491:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a206275726e20616d6f756e7420657863656564732062616c616e6365",
                              "id": 1033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14514:37:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe",
                                "typeString": "literal_string \"ERC777: burn amount exceeds balance\""
                              },
                              "value": "ERC777: burn amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ecdeb627d2306b8b9bb34685df56bbf05cde6b7bc6e45e0248ca50c1b0bd3ebe",
                                "typeString": "literal_string \"ERC777: burn amount exceeds balance\""
                              }
                            ],
                            "id": 1029,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14483:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14483:69:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1035,
                        "nodeType": "ExpressionStatement",
                        "src": "14483:69:2"
                      },
                      {
                        "id": 1044,
                        "nodeType": "UncheckedBlock",
                        "src": "14562:73:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 1042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 1036,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 183,
                                  "src": "14586:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1038,
                                "indexExpression": {
                                  "id": 1037,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 977,
                                  "src": "14596:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "14586:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1039,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1024,
                                  "src": "14604:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 1040,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 979,
                                  "src": "14618:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14604:20:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14586:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1043,
                            "nodeType": "ExpressionStatement",
                            "src": "14586:38:2"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 1047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1045,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 185,
                            "src": "14644:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 1046,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 979,
                            "src": "14660:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14644:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1048,
                        "nodeType": "ExpressionStatement",
                        "src": "14644:22:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1050,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 997,
                              "src": "14689:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1051,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 977,
                              "src": "14699:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1052,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "14705:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1053,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 981,
                              "src": "14713:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1054,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 983,
                              "src": "14719:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1049,
                            "name": "Burned",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1529,
                            "src": "14682:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 1055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14682:50:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1056,
                        "nodeType": "EmitStatement",
                        "src": "14677:55:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1058,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 977,
                              "src": "14756:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1061,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14770:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14762:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1059,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14762:7:2",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14762:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1063,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "14774:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1057,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "14747:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14747:34:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1065,
                        "nodeType": "EmitStatement",
                        "src": "14742:39:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 975,
                    "nodeType": "StructuredDocumentation",
                    "src": "13678:294:2",
                    "text": " @dev Burn tokens\n @param from address token holder address\n @param amount uint256 amount of tokens to burn\n @param data bytes extra information provided by the token holder\n @param operatorData bytes extra information provided by the operator (if any)"
                  },
                  "id": 1067,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "13986:5:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 984,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 977,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14009:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1067,
                        "src": "14001:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 976,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14001:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 979,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "14031:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1067,
                        "src": "14023:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14023:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 981,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14060:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1067,
                        "src": "14047:17:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 980,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14047:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 983,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "14087:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1067,
                        "src": "14074:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 982,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14074:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13991:114:2"
                  },
                  "returnParameters": {
                    "id": 985,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14123:0:2"
                  },
                  "scope": 1343,
                  "src": "13977:811:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1132,
                    "nodeType": "Block",
                    "src": "14981:424:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1083,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1069,
                              "src": "15012:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1084,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1071,
                              "src": "15022:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1085,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "15028:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1086,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "15032:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1082,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1337,
                            "src": "14991:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14991:48:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1088,
                        "nodeType": "ExpressionStatement",
                        "src": "14991:48:2"
                      },
                      {
                        "assignments": [
                          1090
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1090,
                            "mutability": "mutable",
                            "name": "fromBalance",
                            "nameLocation": "15058:11:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 1132,
                            "src": "15050:19:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1089,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15050:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1094,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1091,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 183,
                            "src": "15072:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1093,
                          "indexExpression": {
                            "id": 1092,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1071,
                            "src": "15082:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15072:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15050:37:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1096,
                                "name": "fromBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1090,
                                "src": "15105:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1097,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1075,
                                "src": "15120:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15105:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                              "id": 1099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15128:41:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b",
                                "typeString": "literal_string \"ERC777: transfer amount exceeds balance\""
                              },
                              "value": "ERC777: transfer amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1f1c21f7056055b190ca6c77528b11af9437bed324def87929bb64fac4d57e6b",
                                "typeString": "literal_string \"ERC777: transfer amount exceeds balance\""
                              }
                            ],
                            "id": 1095,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15097:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15097:73:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1101,
                        "nodeType": "ExpressionStatement",
                        "src": "15097:73:2"
                      },
                      {
                        "id": 1110,
                        "nodeType": "UncheckedBlock",
                        "src": "15180:73:2",
                        "statements": [
                          {
                            "expression": {
                              "id": 1108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 1102,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 183,
                                  "src": "15204:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 1104,
                                "indexExpression": {
                                  "id": 1103,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1071,
                                  "src": "15214:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "15204:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1105,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1090,
                                  "src": "15222:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 1106,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "15236:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15222:20:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15204:38:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1109,
                            "nodeType": "ExpressionStatement",
                            "src": "15204:38:2"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 1115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1111,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 183,
                              "src": "15262:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1113,
                            "indexExpression": {
                              "id": 1112,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "15272:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15262:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 1114,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1075,
                            "src": "15279:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15262:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1116,
                        "nodeType": "ExpressionStatement",
                        "src": "15262:23:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1118,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1069,
                              "src": "15306:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1119,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1071,
                              "src": "15316:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1120,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "15322:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1121,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "15326:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1122,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "15334:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1123,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1079,
                              "src": "15344:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1117,
                            "name": "Sent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1505,
                            "src": "15301:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 1124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15301:56:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1125,
                        "nodeType": "EmitStatement",
                        "src": "15296:61:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1127,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1071,
                              "src": "15381:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1128,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "15387:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1129,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "15391:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1126,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 141,
                            "src": "15372:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15372:26:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1131,
                        "nodeType": "EmitStatement",
                        "src": "15367:31:2"
                      }
                    ]
                  },
                  "id": 1133,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_move",
                  "nameLocation": "14803:5:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1069,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "14826:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1133,
                        "src": "14818:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14818:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1071,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14852:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1133,
                        "src": "14844:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14844:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1073,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14874:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1133,
                        "src": "14866:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14866:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1075,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "14894:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1133,
                        "src": "14886:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14886:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1077,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "14923:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1133,
                        "src": "14910:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1076,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14910:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1079,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "14954:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1133,
                        "src": "14941:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1078,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14941:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14808:164:2"
                  },
                  "returnParameters": {
                    "id": 1081,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14981:0:2"
                  },
                  "scope": 1343,
                  "src": "14794:611:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1177,
                    "nodeType": "Block",
                    "src": "15656:260:2",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1144,
                                "name": "holder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1136,
                                "src": "15674:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15692:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15684:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1145,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15684:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15684:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "15674:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                              "id": 1150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15696:39:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7",
                                "typeString": "literal_string \"ERC777: approve from the zero address\""
                              },
                              "value": "ERC777: approve from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0e27915827f7e9aa1f9e706fa48897705bd51fdbb8c4e17f0dcc074873455ca7",
                                "typeString": "literal_string \"ERC777: approve from the zero address\""
                              }
                            ],
                            "id": 1143,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15666:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15666:70:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1152,
                        "nodeType": "ExpressionStatement",
                        "src": "15666:70:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1154,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1138,
                                "src": "15754:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15773:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1156,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15765:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1155,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15765:7:2",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15765:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "15754:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433737373a20617070726f766520746f20746865207a65726f2061646472657373",
                              "id": 1160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15777:37:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d",
                                "typeString": "literal_string \"ERC777: approve to the zero address\""
                              },
                              "value": "ERC777: approve to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f96aab14690ac2986315360e71dcbe877ff7fb69d13c692db6f39f8c2c01f20d",
                                "typeString": "literal_string \"ERC777: approve to the zero address\""
                              }
                            ],
                            "id": 1153,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15746:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15746:69:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1162,
                        "nodeType": "ExpressionStatement",
                        "src": "15746:69:2"
                      },
                      {
                        "expression": {
                          "id": 1169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1163,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 224,
                                "src": "15826:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 1166,
                              "indexExpression": {
                                "id": 1164,
                                "name": "holder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1136,
                                "src": "15838:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15826:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1167,
                            "indexExpression": {
                              "id": 1165,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1138,
                              "src": "15846:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15826:28:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1168,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1140,
                            "src": "15857:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15826:36:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1170,
                        "nodeType": "ExpressionStatement",
                        "src": "15826:36:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1172,
                              "name": "holder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1136,
                              "src": "15886:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1173,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1138,
                              "src": "15894:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1174,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1140,
                              "src": "15903:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1171,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 150,
                            "src": "15877:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15877:32:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1176,
                        "nodeType": "EmitStatement",
                        "src": "15872:37:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1134,
                    "nodeType": "StructuredDocumentation",
                    "src": "15411:127:2",
                    "text": " @dev See {ERC20-_approve}.\n Note that accounts cannot have allowance issued by their operators."
                  },
                  "id": 1178,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "15552:8:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1141,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1136,
                        "mutability": "mutable",
                        "name": "holder",
                        "nameLocation": "15578:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1178,
                        "src": "15570:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1135,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15570:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1138,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "15602:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1178,
                        "src": "15594:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1137,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15594:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1140,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15627:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1178,
                        "src": "15619:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15619:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15560:78:2"
                  },
                  "returnParameters": {
                    "id": 1142,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15656:0:2"
                  },
                  "scope": 1343,
                  "src": "15543:373:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1222,
                    "nodeType": "Block",
                    "src": "16588:284:2",
                    "statements": [
                      {
                        "assignments": [
                          1195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1195,
                            "mutability": "mutable",
                            "name": "implementer",
                            "nameLocation": "16606:11:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 1222,
                            "src": "16598:19:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1194,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16598:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1201,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1198,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1183,
                              "src": "16662:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1199,
                              "name": "_TOKENS_SENDER_INTERFACE_HASH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 194,
                              "src": "16668:29:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 1196,
                              "name": "_ERC1820_REGISTRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 179,
                              "src": "16620:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                                "typeString": "contract IERC1820RegistryUpgradeable"
                              }
                            },
                            "id": 1197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getInterfaceImplementer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1866,
                            "src": "16620:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (address,bytes32) view external returns (address)"
                            }
                          },
                          "id": 1200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16620:78:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16598:100:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1202,
                            "name": "implementer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1195,
                            "src": "16712:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16735:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16727:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1203,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16727:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16727:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16712:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1221,
                        "nodeType": "IfStatement",
                        "src": "16708:158:2",
                        "trueBody": {
                          "id": 1220,
                          "nodeType": "Block",
                          "src": "16739:127:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1212,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1181,
                                    "src": "16804:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1213,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1183,
                                    "src": "16814:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1214,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1185,
                                    "src": "16820:2:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1215,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1187,
                                    "src": "16824:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1216,
                                    "name": "userData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1189,
                                    "src": "16832:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 1217,
                                    "name": "operatorData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1191,
                                    "src": "16842:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1209,
                                        "name": "implementer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1195,
                                        "src": "16778:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1208,
                                      "name": "IERC777SenderUpgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1383,
                                      "src": "16753:24:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC777SenderUpgradeable_$1383_$",
                                        "typeString": "type(contract IERC777SenderUpgradeable)"
                                      }
                                    },
                                    "id": 1210,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16753:37:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC777SenderUpgradeable_$1383",
                                      "typeString": "contract IERC777SenderUpgradeable"
                                    }
                                  },
                                  "id": 1211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tokensToSend",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1382,
                                  "src": "16753:50:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,bytes memory,bytes memory) external"
                                  }
                                },
                                "id": 1218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16753:102:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1219,
                              "nodeType": "ExpressionStatement",
                              "src": "16753:102:2"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1179,
                    "nodeType": "StructuredDocumentation",
                    "src": "15922:462:2",
                    "text": " @dev Call from.tokensToSend() if the interface is registered\n @param operator address operator requesting the transfer\n @param from address token holder address\n @param to address recipient address\n @param amount uint256 amount of tokens to transfer\n @param userData bytes extra information provided by the token holder (if any)\n @param operatorData bytes extra information provided by the operator (if any)"
                  },
                  "id": 1223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callTokensToSend",
                  "nameLocation": "16398:17:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1181,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "16433:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1223,
                        "src": "16425:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16425:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1183,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "16459:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1223,
                        "src": "16451:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1182,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16451:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1185,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "16481:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1223,
                        "src": "16473:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16473:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1187,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "16501:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1223,
                        "src": "16493:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1186,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16493:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1189,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "16530:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1223,
                        "src": "16517:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1188,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16517:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1191,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "16561:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1223,
                        "src": "16548:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1190,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16548:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16415:164:2"
                  },
                  "returnParameters": {
                    "id": 1193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16588:0:2"
                  },
                  "scope": 1343,
                  "src": "16389:483:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1280,
                    "nodeType": "Block",
                    "src": "17796:452:2",
                    "statements": [
                      {
                        "assignments": [
                          1242
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1242,
                            "mutability": "mutable",
                            "name": "implementer",
                            "nameLocation": "17814:11:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 1280,
                            "src": "17806:19:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1241,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17806:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1248,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1245,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1230,
                              "src": "17870:2:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1246,
                              "name": "_TOKENS_RECIPIENT_INTERFACE_HASH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 199,
                              "src": "17874:32:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 1243,
                              "name": "_ERC1820_REGISTRY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 179,
                              "src": "17828:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1820RegistryUpgradeable_$1917",
                                "typeString": "contract IERC1820RegistryUpgradeable"
                              }
                            },
                            "id": 1244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getInterfaceImplementer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1866,
                            "src": "17828:41:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (address,bytes32) view external returns (address)"
                            }
                          },
                          "id": 1247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17828:79:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17806:101:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1249,
                            "name": "implementer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "17921:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17944:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17936:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1250,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17936:7:2",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17936:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17921:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "id": 1268,
                            "name": "requireReceptionAck",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1238,
                            "src": "18090:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1278,
                          "nodeType": "IfStatement",
                          "src": "18086:156:2",
                          "trueBody": {
                            "id": 1277,
                            "nodeType": "Block",
                            "src": "18111:131:2",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "18133:16:2",
                                      "subExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "id": 1270,
                                            "name": "to",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1230,
                                            "src": "18134:2:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "id": 1271,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "isContract",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1560,
                                          "src": "18134:13:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                            "typeString": "function (address) view returns (bool)"
                                          }
                                        },
                                        "id": 1272,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18134:15:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "4552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e74",
                                      "id": 1274,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18151:79:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80",
                                        "typeString": "literal_string \"ERC777: token recipient contract has no implementer for ERC777TokensRecipient\""
                                      },
                                      "value": "ERC777: token recipient contract has no implementer for ERC777TokensRecipient"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_9ee9d43e266ccfb7408c78038627d2c5b376a4a82e9fcfbfea2a9c63dc07fa80",
                                        "typeString": "literal_string \"ERC777: token recipient contract has no implementer for ERC777TokensRecipient\""
                                      }
                                    ],
                                    "id": 1269,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "18125:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 1275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18125:106:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1276,
                                "nodeType": "ExpressionStatement",
                                "src": "18125:106:2"
                              }
                            ]
                          }
                        },
                        "id": 1279,
                        "nodeType": "IfStatement",
                        "src": "17917:325:2",
                        "trueBody": {
                          "id": 1267,
                          "nodeType": "Block",
                          "src": "17948:132:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1259,
                                    "name": "operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1226,
                                    "src": "18018:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1260,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1228,
                                    "src": "18028:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1261,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1230,
                                    "src": "18034:2:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1262,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1232,
                                    "src": "18038:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1263,
                                    "name": "userData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1234,
                                    "src": "18046:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 1264,
                                    "name": "operatorData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1236,
                                    "src": "18056:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1256,
                                        "name": "implementer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1242,
                                        "src": "17990:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1255,
                                      "name": "IERC777RecipientUpgradeable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1363,
                                      "src": "17962:27:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC777RecipientUpgradeable_$1363_$",
                                        "typeString": "type(contract IERC777RecipientUpgradeable)"
                                      }
                                    },
                                    "id": 1257,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17962:40:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC777RecipientUpgradeable_$1363",
                                      "typeString": "contract IERC777RecipientUpgradeable"
                                    }
                                  },
                                  "id": 1258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tokensReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1362,
                                  "src": "17962:55:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,bytes memory,bytes memory) external"
                                  }
                                },
                                "id": 1265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17962:107:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1266,
                              "nodeType": "ExpressionStatement",
                              "src": "17962:107:2"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1224,
                    "nodeType": "StructuredDocumentation",
                    "src": "16878:678:2",
                    "text": " @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but\n tokensReceived() was not registered for the recipient\n @param operator address operator requesting the transfer\n @param from address token holder address\n @param to address recipient address\n @param amount uint256 amount of tokens to transfer\n @param userData bytes extra information provided by the token holder (if any)\n @param operatorData bytes extra information provided by the operator (if any)\n @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient"
                  },
                  "id": 1281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callTokensReceived",
                  "nameLocation": "17570:19:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1226,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "17607:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17599:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17599:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1228,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "17633:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17625:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1227,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17625:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1230,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "17655:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17647:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17647:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1232,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "17675:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17667:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17667:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1234,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "17704:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17691:21:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1233,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17691:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1236,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "17735:12:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17722:25:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1235,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17722:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1238,
                        "mutability": "mutable",
                        "name": "requireReceptionAck",
                        "nameLocation": "17762:19:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1281,
                        "src": "17757:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1237,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17757:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17589:198:2"
                  },
                  "returnParameters": {
                    "id": 1240,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17796:0:2"
                  },
                  "scope": 1343,
                  "src": "17561:687:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1323,
                    "nodeType": "Block",
                    "src": "18645:322:2",
                    "statements": [
                      {
                        "assignments": [
                          1292
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1292,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "18663:16:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 1323,
                            "src": "18655:24:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1291,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18655:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1297,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1294,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1284,
                              "src": "18692:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1295,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1286,
                              "src": "18699:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1293,
                            "name": "allowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 703,
                            "src": "18682:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256)"
                            }
                          },
                          "id": 1296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18682:25:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18655:52:2"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1298,
                            "name": "currentAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1292,
                            "src": "18721:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1301,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "18746:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1300,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18746:7:2",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 1299,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "18741:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 1302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18741:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 1303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "18741:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18721:37:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1322,
                        "nodeType": "IfStatement",
                        "src": "18717:244:2",
                        "trueBody": {
                          "id": 1321,
                          "nodeType": "Block",
                          "src": "18760:201:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1306,
                                      "name": "currentAllowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1292,
                                      "src": "18782:16:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 1307,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1288,
                                      "src": "18802:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "18782:26:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4552433737373a20696e73756666696369656e7420616c6c6f77616e6365",
                                    "id": 1309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18810:32:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb",
                                      "typeString": "literal_string \"ERC777: insufficient allowance\""
                                    },
                                    "value": "ERC777: insufficient allowance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_43a72b1be6b1964d60860b54d1c331016464b9d17c1d10dbea6a002344132abb",
                                      "typeString": "literal_string \"ERC777: insufficient allowance\""
                                    }
                                  ],
                                  "id": 1305,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "18774:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18774:69:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1311,
                              "nodeType": "ExpressionStatement",
                              "src": "18774:69:2"
                            },
                            {
                              "id": 1320,
                              "nodeType": "UncheckedBlock",
                              "src": "18857:94:2",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1313,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1284,
                                        "src": "18894:5:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 1314,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1286,
                                        "src": "18901:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1317,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1315,
                                          "name": "currentAllowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1292,
                                          "src": "18910:16:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 1316,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1288,
                                          "src": "18929:6:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "18910:25:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1312,
                                      "name": "_approve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1178,
                                      "src": "18885:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,uint256)"
                                      }
                                    },
                                    "id": 1318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18885:51:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1319,
                                  "nodeType": "ExpressionStatement",
                                  "src": "18885:51:2"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1282,
                    "nodeType": "StructuredDocumentation",
                    "src": "18254:266:2",
                    "text": " @dev Spend `amount` form the allowance of `owner` toward `spender`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."
                  },
                  "id": 1324,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_spendAllowance",
                  "nameLocation": "18534:15:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1284,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "18567:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1324,
                        "src": "18559:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1283,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18559:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1286,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "18590:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1324,
                        "src": "18582:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18582:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1288,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "18615:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1324,
                        "src": "18607:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18607:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18549:78:2"
                  },
                  "returnParameters": {
                    "id": 1290,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18645:0:2"
                  },
                  "scope": 1343,
                  "src": "18525:442:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1336,
                    "nodeType": "Block",
                    "src": "19740:2:2",
                    "statements": []
                  },
                  "documentation": {
                    "id": 1325,
                    "nodeType": "StructuredDocumentation",
                    "src": "18973:617:2",
                    "text": " @dev Hook that is called before any token transfer. This includes\n calls to {send}, {transfer}, {operatorSend}, minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 1337,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "19604:20:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1334,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1327,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "19642:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1337,
                        "src": "19634:16:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1326,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19634:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1329,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "19668:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1337,
                        "src": "19660:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19660:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1331,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "19690:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1337,
                        "src": "19682:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1330,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19682:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1333,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "19710:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 1337,
                        "src": "19702:14:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1332,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19702:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19624:98:2"
                  },
                  "returnParameters": {
                    "id": 1335,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19740:0:2"
                  },
                  "scope": 1343,
                  "src": "19595:147:2",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 1338,
                    "nodeType": "StructuredDocumentation",
                    "src": "19748:254:2",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 1342,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "20027:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1343,
                  "src": "20007:25:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$41_storage",
                    "typeString": "uint256[41]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1339,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "20007:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1341,
                    "length": {
                      "hexValue": "3431",
                      "id": 1340,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20015:2:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_41_by_1",
                        "typeString": "int_const 41"
                      },
                      "value": "41"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "20007:11:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$41_storage_ptr",
                      "typeString": "uint256[41]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 1344,
              "src": "1211:18824:2",
              "usedErrors": []
            }
          ],
          "src": "107:19929:2"
        },
        "id": 2
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777RecipientUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777RecipientUpgradeable.sol",
          "exportedSymbols": {
            "IERC777RecipientUpgradeable": [
              1363
            ]
          },
          "id": 1364,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1345,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "102:23:3"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC777RecipientUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1346,
                "nodeType": "StructuredDocumentation",
                "src": "127:406:3",
                "text": " @dev Interface of the ERC777TokensRecipient standard as defined in the EIP.\n Accounts can be notified of {IERC777} tokens being sent to them by having a\n contract implement this interface (contract holders can be their own\n implementer) and registering it on the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n See {IERC1820Registry} and {ERC1820Implementer}."
              },
              "fullyImplemented": false,
              "id": 1363,
              "linearizedBaseContracts": [
                1363
              ],
              "name": "IERC777RecipientUpgradeable",
              "nameLocation": "544:27:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1347,
                    "nodeType": "StructuredDocumentation",
                    "src": "578:474:3",
                    "text": " @dev Called by an {IERC777} token contract whenever tokens are being\n moved or created into a registered account (`to`). The type of operation\n is conveyed by `from` being the zero address or not.\n This call occurs _after_ the token contract's state is updated, so\n {IERC777-balanceOf}, etc., can be used to query the post-operation state.\n This function may revert to prevent the operation from being executed."
                  },
                  "functionSelector": "0023de29",
                  "id": 1362,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokensReceived",
                  "nameLocation": "1066:14:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1360,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1349,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1098:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1090:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1090:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1351,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1124:4:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1116:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1350,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1116:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1353,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1146:2:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1138:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1352,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1138:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1355,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1166:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1158:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1357,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "1197:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1182:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1356,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1182:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1359,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "1230:12:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1362,
                        "src": "1215:27:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1358,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1215:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1080:168:3"
                  },
                  "returnParameters": {
                    "id": 1361,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1257:0:3"
                  },
                  "scope": 1363,
                  "src": "1057:201:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1364,
              "src": "534:726:3",
              "usedErrors": []
            }
          ],
          "src": "102:1159:3"
        },
        "id": 3
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777SenderUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777SenderUpgradeable.sol",
          "exportedSymbols": {
            "IERC777SenderUpgradeable": [
              1383
            ]
          },
          "id": 1384,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1365,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:23:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC777SenderUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1366,
                "nodeType": "StructuredDocumentation",
                "src": "124:419:4",
                "text": " @dev Interface of the ERC777TokensSender standard as defined in the EIP.\n {IERC777} Token holders can be notified of operations performed on their\n tokens by having a contract implement this interface (contract holders can be\n their own implementer) and registering it on the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 global registry].\n See {IERC1820Registry} and {ERC1820Implementer}."
              },
              "fullyImplemented": false,
              "id": 1383,
              "linearizedBaseContracts": [
                1383
              ],
              "name": "IERC777SenderUpgradeable",
              "nameLocation": "554:24:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1367,
                    "nodeType": "StructuredDocumentation",
                    "src": "585:478:4",
                    "text": " @dev Called by an {IERC777} token contract whenever a registered holder's\n (`from`) tokens are about to be moved or destroyed. The type of operation\n is conveyed by `to` being the zero address or not.\n This call occurs _before_ the token contract's state is updated, so\n {IERC777-balanceOf}, etc., can be used to query the pre-operation state.\n This function may revert to prevent the operation from being executed."
                  },
                  "functionSelector": "75ab9782",
                  "id": 1382,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokensToSend",
                  "nameLocation": "1077:12:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1369,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "1107:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "1099:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1368,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1099:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1371,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1133:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "1125:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1370,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1125:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1373,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1155:2:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "1147:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1147:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1375,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1175:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "1167:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1374,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1167:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1377,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "1206:8:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "1191:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1376,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1379,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "1239:12:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1382,
                        "src": "1224:27:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1378,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1224:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1089:168:4"
                  },
                  "returnParameters": {
                    "id": 1381,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1266:0:4"
                  },
                  "scope": 1383,
                  "src": "1068:199:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1384,
              "src": "544:725:4",
              "usedErrors": []
            }
          ],
          "src": "99:1171:4"
        },
        "id": 4
      },
      "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777Upgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/IERC777Upgradeable.sol",
          "exportedSymbols": {
            "IERC777Upgradeable": [
              1542
            ]
          },
          "id": 1543,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1385,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "93:23:5"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC777Upgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1386,
                "nodeType": "StructuredDocumentation",
                "src": "118:372:5",
                "text": " @dev Interface of the ERC777Token standard as defined in the EIP.\n This contract uses the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n token holders and recipients react to token movements by using setting implementers\n for the associated interfaces in said registry. See {IERC1820Registry} and\n {ERC1820Implementer}."
              },
              "fullyImplemented": false,
              "id": 1542,
              "linearizedBaseContracts": [
                1542
              ],
              "name": "IERC777Upgradeable",
              "nameLocation": "501:18:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1387,
                    "nodeType": "StructuredDocumentation",
                    "src": "526:54:5",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 1392,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "594:4:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1388,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "598:2:5"
                  },
                  "returnParameters": {
                    "id": 1391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1390,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1392,
                        "src": "624:13:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1389,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "624:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "623:15:5"
                  },
                  "scope": 1542,
                  "src": "585:54:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1393,
                    "nodeType": "StructuredDocumentation",
                    "src": "645:102:5",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 1398,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "761:6:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1394,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "767:2:5"
                  },
                  "returnParameters": {
                    "id": 1397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1396,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1398,
                        "src": "793:13:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1395,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:15:5"
                  },
                  "scope": 1542,
                  "src": "752:56:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1399,
                    "nodeType": "StructuredDocumentation",
                    "src": "814:287:5",
                    "text": " @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n For most token contracts, this value will equal 1."
                  },
                  "functionSelector": "556f0dc7",
                  "id": 1404,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "granularity",
                  "nameLocation": "1115:11:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1400,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1126:2:5"
                  },
                  "returnParameters": {
                    "id": 1403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1402,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1404,
                        "src": "1152:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1152:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1151:9:5"
                  },
                  "scope": 1542,
                  "src": "1106:55:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1405,
                    "nodeType": "StructuredDocumentation",
                    "src": "1167:66:5",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 1410,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "1247:11:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1406,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1258:2:5"
                  },
                  "returnParameters": {
                    "id": 1409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1408,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1410,
                        "src": "1284:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1284:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1283:9:5"
                  },
                  "scope": 1542,
                  "src": "1238:55:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1411,
                    "nodeType": "StructuredDocumentation",
                    "src": "1299:83:5",
                    "text": " @dev Returns the amount of tokens owned by an account (`owner`)."
                  },
                  "functionSelector": "70a08231",
                  "id": 1418,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1396:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1413,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1414:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1418,
                        "src": "1406:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1412,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1406:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1405:15:5"
                  },
                  "returnParameters": {
                    "id": 1417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1416,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1418,
                        "src": "1444:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1415,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1444:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1443:9:5"
                  },
                  "scope": 1542,
                  "src": "1387:66:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1419,
                    "nodeType": "StructuredDocumentation",
                    "src": "1459:585:5",
                    "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
                  },
                  "functionSelector": "9bd9bbc6",
                  "id": 1428,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "send",
                  "nameLocation": "2058:4:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1421,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2080:9:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1428,
                        "src": "2072:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1420,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2072:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1423,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2107:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1428,
                        "src": "2099:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2099:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1425,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2138:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1428,
                        "src": "2123:19:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1424,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2123:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2062:86:5"
                  },
                  "returnParameters": {
                    "id": 1427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2157:0:5"
                  },
                  "scope": 1542,
                  "src": "2049:109:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1429,
                    "nodeType": "StructuredDocumentation",
                    "src": "2164:404:5",
                    "text": " @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - the caller must have at least `amount` tokens."
                  },
                  "functionSelector": "fe9d9303",
                  "id": 1436,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "2582:4:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1431,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2595:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1436,
                        "src": "2587:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2587:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1433,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2618:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1436,
                        "src": "2603:19:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1432,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2603:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2586:37:5"
                  },
                  "returnParameters": {
                    "id": 1435,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2632:0:5"
                  },
                  "scope": 1542,
                  "src": "2573:60:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1437,
                    "nodeType": "StructuredDocumentation",
                    "src": "2639:249:5",
                    "text": " @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."
                  },
                  "functionSelector": "d95b6371",
                  "id": 1446,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isOperatorFor",
                  "nameLocation": "2902:13:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1439,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2924:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1446,
                        "src": "2916:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2916:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1441,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "2942:11:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1446,
                        "src": "2934:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2934:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2915:39:5"
                  },
                  "returnParameters": {
                    "id": 1445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1444,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1446,
                        "src": "2978:4:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1443,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2978:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2977:6:5"
                  },
                  "scope": 1542,
                  "src": "2893:91:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1447,
                    "nodeType": "StructuredDocumentation",
                    "src": "2990:233:5",
                    "text": " @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n Emits an {AuthorizedOperator} event.\n Requirements\n - `operator` cannot be calling address."
                  },
                  "functionSelector": "959b8c3f",
                  "id": 1452,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "authorizeOperator",
                  "nameLocation": "3237:17:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1449,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3263:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1452,
                        "src": "3255:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1448,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3255:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3254:18:5"
                  },
                  "returnParameters": {
                    "id": 1451,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3281:0:5"
                  },
                  "scope": 1542,
                  "src": "3228:54:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1453,
                    "nodeType": "StructuredDocumentation",
                    "src": "3288:261:5",
                    "text": " @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n Emits a {RevokedOperator} event.\n Requirements\n - `operator` cannot be calling address."
                  },
                  "functionSelector": "fad8b32a",
                  "id": 1458,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeOperator",
                  "nameLocation": "3563:14:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1456,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1455,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3586:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1458,
                        "src": "3578:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1454,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3578:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3577:18:5"
                  },
                  "returnParameters": {
                    "id": 1457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3604:0:5"
                  },
                  "scope": 1542,
                  "src": "3554:51:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1459,
                    "nodeType": "StructuredDocumentation",
                    "src": "3611:338:5",
                    "text": " @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."
                  },
                  "functionSelector": "06e48538",
                  "id": 1465,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultOperators",
                  "nameLocation": "3963:16:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1460,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3979:2:5"
                  },
                  "returnParameters": {
                    "id": 1464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1463,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1465,
                        "src": "4005:16:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1461,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4005:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1462,
                          "nodeType": "ArrayTypeName",
                          "src": "4005:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4004:18:5"
                  },
                  "scope": 1542,
                  "src": "3954:69:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1466,
                    "nodeType": "StructuredDocumentation",
                    "src": "4029:714:5",
                    "text": " @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
                  },
                  "functionSelector": "62ad1b83",
                  "id": 1479,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "operatorSend",
                  "nameLocation": "4757:12:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1468,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "4787:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "4779:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1467,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4779:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1470,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4811:9:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "4803:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1469,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4803:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1472,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4838:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "4830:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4830:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1474,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4869:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "4854:19:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1473,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4854:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1476,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "4898:12:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1479,
                        "src": "4883:27:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1475,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4883:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4769:147:5"
                  },
                  "returnParameters": {
                    "id": 1478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4925:0:5"
                  },
                  "scope": 1542,
                  "src": "4748:178:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1480,
                    "nodeType": "StructuredDocumentation",
                    "src": "4932:532:5",
                    "text": " @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."
                  },
                  "functionSelector": "fc673c4f",
                  "id": 1491,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "operatorBurn",
                  "nameLocation": "5478:12:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1482,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "5508:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1491,
                        "src": "5500:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1481,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5500:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1484,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5533:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1491,
                        "src": "5525:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5525:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1486,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5564:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1491,
                        "src": "5549:19:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1485,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5549:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1488,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "5593:12:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1491,
                        "src": "5578:27:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1487,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5578:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5490:121:5"
                  },
                  "returnParameters": {
                    "id": 1490,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5620:0:5"
                  },
                  "scope": 1542,
                  "src": "5469:152:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "id": 1505,
                  "name": "Sent",
                  "nameLocation": "5633:4:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1493,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5663:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "5647:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5647:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1495,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5697:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "5681:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1494,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5681:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1497,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5727:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "5711:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1496,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5711:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1499,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5747:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "5739:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1498,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5739:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1501,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5769:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "5763:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1500,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5763:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1503,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "5789:12:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "5783:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1502,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5783:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5637:170:5"
                  },
                  "src": "5627:181:5"
                },
                {
                  "anonymous": false,
                  "id": 1517,
                  "name": "Minted",
                  "nameLocation": "5820:6:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1507,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5843:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1517,
                        "src": "5827:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1506,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5827:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1509,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5869:2:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1517,
                        "src": "5853:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5853:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1511,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5881:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1517,
                        "src": "5873:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1510,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5873:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1513,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5895:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1517,
                        "src": "5889:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1512,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5889:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1515,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "5907:12:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1517,
                        "src": "5901:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1514,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5901:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5826:94:5"
                  },
                  "src": "5814:107:5"
                },
                {
                  "anonymous": false,
                  "id": 1529,
                  "name": "Burned",
                  "nameLocation": "5933:6:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1519,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5956:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1529,
                        "src": "5940:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1518,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5940:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1521,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5982:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1529,
                        "src": "5966:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1520,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5966:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1523,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5996:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1529,
                        "src": "5988:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1522,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5988:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1525,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6010:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1529,
                        "src": "6004:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1524,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6004:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1527,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "6022:12:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1529,
                        "src": "6016:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1526,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6016:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5939:96:5"
                  },
                  "src": "5927:109:5"
                },
                {
                  "anonymous": false,
                  "id": 1535,
                  "name": "AuthorizedOperator",
                  "nameLocation": "6048:18:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1531,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6083:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1535,
                        "src": "6067:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1530,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6067:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1533,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "6109:11:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1535,
                        "src": "6093:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6093:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6066:55:5"
                  },
                  "src": "6042:80:5"
                },
                {
                  "anonymous": false,
                  "id": 1541,
                  "name": "RevokedOperator",
                  "nameLocation": "6134:15:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1537,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6166:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1541,
                        "src": "6150:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6150:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1539,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "6192:11:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1541,
                        "src": "6176:27:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1538,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6176:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6149:55:5"
                  },
                  "src": "6128:77:5"
                }
              ],
              "scope": 1543,
              "src": "491:5716:5",
              "usedErrors": []
            }
          ],
          "src": "93:6115:5"
        },
        "id": 5
      },
      "@openzeppelin-upgradeable/contracts/utils/AddressUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/utils/AddressUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              1785
            ]
          },
          "id": 1786,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1544,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".1"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "AddressUpgradeable",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 1545,
                "nodeType": "StructuredDocumentation",
                "src": "126:67:6",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 1785,
              "linearizedBaseContracts": [
                1785
              ],
              "name": "AddressUpgradeable",
              "nameLocation": "202:18:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1559,
                    "nodeType": "Block",
                    "src": "1252:254:6",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 1553,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1548,
                                "src": "1476:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1476:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1476:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1498:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1476:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1552,
                        "id": 1558,
                        "nodeType": "Return",
                        "src": "1469:30:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1546,
                    "nodeType": "StructuredDocumentation",
                    "src": "227:954:6",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="
                  },
                  "id": 1560,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nameLocation": "1195:10:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1548,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1214:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1560,
                        "src": "1206:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1547,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1206:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1205:17:6"
                  },
                  "returnParameters": {
                    "id": 1552,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1551,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1560,
                        "src": "1246:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1550,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1246:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1245:6:6"
                  },
                  "scope": 1785,
                  "src": "1186:320:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1593,
                    "nodeType": "Block",
                    "src": "2494:241:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1571,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2520:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$1785",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$1785",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    ],
                                    "id": 1570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2512:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1569,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2512:7:6",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2512:13:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "2512:21:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1574,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1565,
                                "src": "2537:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2512:31:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 1576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2545:31:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              },
                              "value": "Address: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              }
                            ],
                            "id": 1568,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2504:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2504:73:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1578,
                        "nodeType": "ExpressionStatement",
                        "src": "2504:73:6"
                      },
                      {
                        "assignments": [
                          1580,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1580,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2594:7:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1593,
                            "src": "2589:12:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1579,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2589:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 1587,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 1585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2637:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 1581,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1563,
                                "src": "2607:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 1582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "2607:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 1583,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1565,
                                "src": "2629:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2607:29:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2607:33:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2588:52:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1589,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1580,
                              "src": "2658:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 1590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2667:60:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              },
                              "value": "Address: unable to send value, recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              }
                            ],
                            "id": 1588,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2650:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2650:78:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1592,
                        "nodeType": "ExpressionStatement",
                        "src": "2650:78:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1561,
                    "nodeType": "StructuredDocumentation",
                    "src": "1512:906:6",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 1594,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "2432:9:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1563,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2458:9:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1594,
                        "src": "2442:25:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 1562,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2442:15:6",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1565,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2477:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1594,
                        "src": "2469:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1564,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2469:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2441:43:6"
                  },
                  "returnParameters": {
                    "id": 1567,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2494:0:6"
                  },
                  "scope": 1785,
                  "src": "2423:312:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1610,
                    "nodeType": "Block",
                    "src": "3566:84:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1605,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1597,
                              "src": "3596:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1606,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1599,
                              "src": "3604:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 1607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3610:32:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              },
                              "value": "Address: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              }
                            ],
                            "id": 1604,
                            "name": "functionCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1611,
                              1631
                            ],
                            "referencedDeclaration": 1631,
                            "src": "3583:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 1608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3583:60:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1603,
                        "id": 1609,
                        "nodeType": "Return",
                        "src": "3576:67:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1595,
                    "nodeType": "StructuredDocumentation",
                    "src": "2741:731:6",
                    "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                  },
                  "id": 1611,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3486:12:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1597,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3507:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1611,
                        "src": "3499:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3499:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1599,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3528:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1611,
                        "src": "3515:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1598,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3515:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3498:35:6"
                  },
                  "returnParameters": {
                    "id": 1603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1602,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1611,
                        "src": "3552:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1601,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3552:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3551:14:6"
                  },
                  "scope": 1785,
                  "src": "3477:173:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1630,
                    "nodeType": "Block",
                    "src": "4019:76:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1624,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1614,
                              "src": "4058:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1625,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1616,
                              "src": "4066:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4072:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 1627,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1618,
                              "src": "4075:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1623,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1651,
                              1701
                            ],
                            "referencedDeclaration": 1701,
                            "src": "4036:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 1628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4036:52:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1622,
                        "id": 1629,
                        "nodeType": "Return",
                        "src": "4029:59:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1612,
                    "nodeType": "StructuredDocumentation",
                    "src": "3656:211:6",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 1631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3881:12:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1614,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3911:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1631,
                        "src": "3903:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1613,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3903:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1616,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3940:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1631,
                        "src": "3927:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1615,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3927:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1618,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "3968:12:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1631,
                        "src": "3954:26:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1617,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3954:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3893:93:6"
                  },
                  "returnParameters": {
                    "id": 1622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1621,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1631,
                        "src": "4005:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1620,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4005:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4004:14:6"
                  },
                  "scope": 1785,
                  "src": "3872:223:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1650,
                    "nodeType": "Block",
                    "src": "4600:111:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1644,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1634,
                              "src": "4639:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1645,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1636,
                              "src": "4647:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1646,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1638,
                              "src": "4653:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4660:43:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              },
                              "value": "Address: low-level call with value failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              }
                            ],
                            "id": 1643,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1651,
                              1701
                            ],
                            "referencedDeclaration": 1701,
                            "src": "4617:21:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 1648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4617:87:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1642,
                        "id": 1649,
                        "nodeType": "Return",
                        "src": "4610:94:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1632,
                    "nodeType": "StructuredDocumentation",
                    "src": "4101:351:6",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                  },
                  "id": 1651,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4466:21:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1634,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4505:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1651,
                        "src": "4497:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1633,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4497:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1636,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4534:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1651,
                        "src": "4521:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1635,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4521:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1638,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4556:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1651,
                        "src": "4548:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4548:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4487:80:6"
                  },
                  "returnParameters": {
                    "id": 1642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1641,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1651,
                        "src": "4586:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1640,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4586:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4585:14:6"
                  },
                  "scope": 1785,
                  "src": "4457:254:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1700,
                    "nodeType": "Block",
                    "src": "5138:320:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1668,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5164:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$1785",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_AddressUpgradeable_$1785",
                                        "typeString": "library AddressUpgradeable"
                                      }
                                    ],
                                    "id": 1667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5156:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1666,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5156:7:6",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5156:13:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "5156:21:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1671,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1658,
                                "src": "5181:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5156:30:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                              "id": 1673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5188:40:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              },
                              "value": "Address: insufficient balance for call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              }
                            ],
                            "id": 1665,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5148:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5148:81:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1675,
                        "nodeType": "ExpressionStatement",
                        "src": "5148:81:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1678,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1654,
                                  "src": "5258:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1677,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1560,
                                "src": "5247:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 1679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5247:18:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 1680,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5267:31:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              },
                              "value": "Address: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              }
                            ],
                            "id": 1676,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5239:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5239:60:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1682,
                        "nodeType": "ExpressionStatement",
                        "src": "5239:60:6"
                      },
                      {
                        "assignments": [
                          1684,
                          1686
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1684,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5316:7:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1700,
                            "src": "5311:12:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1683,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5311:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1686,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "5338:10:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1700,
                            "src": "5325:23:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1685,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5325:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1693,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1691,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1656,
                              "src": "5378:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 1687,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1654,
                                "src": "5352:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5352:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 1689,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1658,
                                "src": "5371:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5352:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5352:31:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5310:73:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1695,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1684,
                              "src": "5417:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 1696,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1686,
                              "src": "5426:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1697,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1660,
                              "src": "5438:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1694,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "5400:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 1698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5400:51:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1664,
                        "id": 1699,
                        "nodeType": "Return",
                        "src": "5393:58:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1652,
                    "nodeType": "StructuredDocumentation",
                    "src": "4717:237:6",
                    "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 1701,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4968:21:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1654,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5007:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "4999:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4999:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1656,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5036:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "5023:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1655,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5023:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1658,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5058:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "5050:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5050:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1660,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "5087:12:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "5073:26:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1659,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5073:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4989:116:6"
                  },
                  "returnParameters": {
                    "id": 1664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1663,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1701,
                        "src": "5124:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1662,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5124:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5123:14:6"
                  },
                  "scope": 1785,
                  "src": "4959:499:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1717,
                    "nodeType": "Block",
                    "src": "5735:97:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1712,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1704,
                              "src": "5771:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1713,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1706,
                              "src": "5779:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                              "id": 1714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5785:39:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              },
                              "value": "Address: low-level static call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              }
                            ],
                            "id": 1711,
                            "name": "functionStaticCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1718,
                              1753
                            ],
                            "referencedDeclaration": 1753,
                            "src": "5752:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                            }
                          },
                          "id": 1715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5752:73:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1710,
                        "id": 1716,
                        "nodeType": "Return",
                        "src": "5745:80:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1702,
                    "nodeType": "StructuredDocumentation",
                    "src": "5464:166:6",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 1718,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "5644:18:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1704,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5671:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1718,
                        "src": "5663:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1703,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5663:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1706,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5692:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1718,
                        "src": "5679:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1705,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5679:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5662:35:6"
                  },
                  "returnParameters": {
                    "id": 1710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1709,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1718,
                        "src": "5721:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1708,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5721:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5720:14:6"
                  },
                  "scope": 1785,
                  "src": "5635:197:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1752,
                    "nodeType": "Block",
                    "src": "6174:228:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1732,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1721,
                                  "src": "6203:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1731,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1560,
                                "src": "6192:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 1733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6192:18:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 1734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6212:38:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              },
                              "value": "Address: static call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              }
                            ],
                            "id": 1730,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6184:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6184:67:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1736,
                        "nodeType": "ExpressionStatement",
                        "src": "6184:67:6"
                      },
                      {
                        "assignments": [
                          1738,
                          1740
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1738,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "6268:7:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1752,
                            "src": "6263:12:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1737,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6263:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1740,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "6290:10:6",
                            "nodeType": "VariableDeclaration",
                            "scope": 1752,
                            "src": "6277:23:6",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1739,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6277:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1745,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1743,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1723,
                              "src": "6322:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 1741,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1721,
                              "src": "6304:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6304:17:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 1744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6304:23:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6262:65:6"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1747,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1738,
                              "src": "6361:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 1748,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1740,
                              "src": "6370:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 1749,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1725,
                              "src": "6382:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 1746,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "6344:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 1750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6344:51:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 1729,
                        "id": 1751,
                        "nodeType": "Return",
                        "src": "6337:58:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1719,
                    "nodeType": "StructuredDocumentation",
                    "src": "5838:173:6",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 1753,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "6025:18:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1721,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6061:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1753,
                        "src": "6053:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1720,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6053:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1723,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6090:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1753,
                        "src": "6077:17:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1722,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6077:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1725,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6118:12:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1753,
                        "src": "6104:26:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1724,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6104:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6043:93:6"
                  },
                  "returnParameters": {
                    "id": 1729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1728,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1753,
                        "src": "6160:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1727,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6160:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6159:14:6"
                  },
                  "scope": 1785,
                  "src": "6016:386:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1783,
                    "nodeType": "Block",
                    "src": "6782:532:6",
                    "statements": [
                      {
                        "condition": {
                          "id": 1765,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1756,
                          "src": "6796:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1781,
                          "nodeType": "Block",
                          "src": "6853:455:6",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1769,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1758,
                                    "src": "6937:10:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 1770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "6937:17:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 1771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6957:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6937:21:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1779,
                                "nodeType": "Block",
                                "src": "7245:53:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1776,
                                          "name": "errorMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1760,
                                          "src": "7270:12:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 1775,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "7263:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 1777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7263:20:6",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1778,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7263:20:6"
                                  }
                                ]
                              },
                              "id": 1780,
                              "nodeType": "IfStatement",
                              "src": "6933:365:6",
                              "trueBody": {
                                "id": 1774,
                                "nodeType": "Block",
                                "src": "6960:279:6",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "7080:145:6",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "7102:40:6",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "returndata",
                                                "nodeType": "YulIdentifier",
                                                "src": "7131:10:6"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "7125:5:6"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7125:17:6"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulTypedName",
                                              "src": "7106:15:6",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7174:2:6",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "returndata",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7178:10:6"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7170:3:6"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7170:19:6"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "7191:15:6"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "7163:6:6"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7163:44:6"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "7163:44:6"
                                        }
                                      ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 1758,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "7131:10:6",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 1758,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "7178:10:6",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 1773,
                                    "nodeType": "InlineAssembly",
                                    "src": "7071:154:6"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 1782,
                        "nodeType": "IfStatement",
                        "src": "6792:516:6",
                        "trueBody": {
                          "id": 1768,
                          "nodeType": "Block",
                          "src": "6805:42:6",
                          "statements": [
                            {
                              "expression": {
                                "id": 1766,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1758,
                                "src": "6826:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 1764,
                              "id": 1767,
                              "nodeType": "Return",
                              "src": "6819:17:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1754,
                    "nodeType": "StructuredDocumentation",
                    "src": "6408:209:6",
                    "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"
                  },
                  "id": 1784,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "6631:16:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1756,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6662:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1784,
                        "src": "6657:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1755,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6657:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1758,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "6692:10:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1784,
                        "src": "6679:23:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1757,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6679:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1760,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6726:12:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1784,
                        "src": "6712:26:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1759,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6712:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6647:97:6"
                  },
                  "returnParameters": {
                    "id": 1764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1763,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1784,
                        "src": "6768:12:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1762,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6768:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6767:14:6"
                  },
                  "scope": 1785,
                  "src": "6622:692:6",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1786,
              "src": "194:7122:6",
              "usedErrors": []
            }
          ],
          "src": "101:7216:6"
        },
        "id": 6
      },
      "@openzeppelin-upgradeable/contracts/utils/ContextUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/utils/ContextUpgradeable.sol",
          "exportedSymbols": {
            "AddressUpgradeable": [
              1785
            ],
            "ContextUpgradeable": [
              1827
            ],
            "Initializable": [
              73
            ]
          },
          "id": 1828,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1787,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:7"
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol",
              "file": "../proxy/utils/Initializable.sol",
              "id": 1788,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1828,
              "sourceUnit": 74,
              "src": "110:42:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1790,
                    "name": "Initializable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 73,
                    "src": "691:13:7"
                  },
                  "id": 1791,
                  "nodeType": "InheritanceSpecifier",
                  "src": "691:13:7"
                }
              ],
              "canonicalName": "ContextUpgradeable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1789,
                "nodeType": "StructuredDocumentation",
                "src": "154:496:7",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 1827,
              "linearizedBaseContracts": [
                1827,
                73
              ],
              "name": "ContextUpgradeable",
              "nameLocation": "669:18:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1796,
                    "nodeType": "Block",
                    "src": "763:7:7",
                    "statements": []
                  },
                  "id": 1797,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 1794,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 1793,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 57,
                        "src": "746:16:7"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "746:16:7"
                    }
                  ],
                  "name": "__Context_init",
                  "nameLocation": "720:14:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1792,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "734:2:7"
                  },
                  "returnParameters": {
                    "id": 1795,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "763:0:7"
                  },
                  "scope": 1827,
                  "src": "711:59:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1802,
                    "nodeType": "Block",
                    "src": "838:7:7",
                    "statements": []
                  },
                  "id": 1803,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 1800,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 1799,
                        "name": "onlyInitializing",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 57,
                        "src": "821:16:7"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "821:16:7"
                    }
                  ],
                  "name": "__Context_init_unchained",
                  "nameLocation": "785:24:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1798,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "809:2:7"
                  },
                  "returnParameters": {
                    "id": 1801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "838:0:7"
                  },
                  "scope": 1827,
                  "src": "776:69:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1811,
                    "nodeType": "Block",
                    "src": "912:34:7",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 1808,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "929:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "929:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1807,
                        "id": 1810,
                        "nodeType": "Return",
                        "src": "922:17:7"
                      }
                    ]
                  },
                  "id": 1812,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "859:10:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1804,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "869:2:7"
                  },
                  "returnParameters": {
                    "id": 1807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1806,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1812,
                        "src": "903:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "902:9:7"
                  },
                  "scope": 1827,
                  "src": "850:96:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1820,
                    "nodeType": "Block",
                    "src": "1019:32:7",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 1817,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1036:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "1036:8:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 1816,
                        "id": 1819,
                        "nodeType": "Return",
                        "src": "1029:15:7"
                      }
                    ]
                  },
                  "id": 1821,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "961:8:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1813,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "969:2:7"
                  },
                  "returnParameters": {
                    "id": 1816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1815,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1821,
                        "src": "1003:14:7",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1814,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1003:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1002:16:7"
                  },
                  "scope": 1827,
                  "src": "952:99:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 1822,
                    "nodeType": "StructuredDocumentation",
                    "src": "1057:254:7",
                    "text": " @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"
                  },
                  "id": 1826,
                  "mutability": "mutable",
                  "name": "__gap",
                  "nameLocation": "1336:5:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 1827,
                  "src": "1316:25:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1823,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1316:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1825,
                    "length": {
                      "hexValue": "3530",
                      "id": 1824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1324:2:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "1316:11:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "visibility": "private"
                }
              ],
              "scope": 1828,
              "src": "651:693:7",
              "usedErrors": []
            }
          ],
          "src": "86:1259:7"
        },
        "id": 7
      },
      "@openzeppelin-upgradeable/contracts/utils/introspection/IERC1820RegistryUpgradeable.sol": {
        "ast": {
          "absolutePath": "@openzeppelin-upgradeable/contracts/utils/introspection/IERC1820RegistryUpgradeable.sol",
          "exportedSymbols": {
            "IERC1820RegistryUpgradeable": [
              1917
            ]
          },
          "id": 1918,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1829,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "109:23:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1820RegistryUpgradeable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1830,
                "nodeType": "StructuredDocumentation",
                "src": "134:619:8",
                "text": " @dev Interface of the global ERC1820 Registry, as defined in the\n https://eips.ethereum.org/EIPS/eip-1820[EIP]. Accounts may register\n implementers for interfaces in this registry, as well as query support.\n Implementers may be shared by multiple accounts, and can also implement more\n than a single interface for each account. Contracts can implement interfaces\n for themselves, but externally-owned accounts (EOA) must delegate this to a\n contract.\n {IERC165} interfaces can also be queried via the registry.\n For an in-depth explanation and source code analysis, see the EIP text."
              },
              "fullyImplemented": false,
              "id": 1917,
              "linearizedBaseContracts": [
                1917
              ],
              "name": "IERC1820RegistryUpgradeable",
              "nameLocation": "764:27:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1831,
                    "nodeType": "StructuredDocumentation",
                    "src": "798:445:8",
                    "text": " @dev Sets `newManager` as the manager for `account`. A manager of an\n account is able to set interface implementers for it.\n By default, each account is its own manager. Passing a value of `0x0` in\n `newManager` will reset the manager to this initial state.\n Emits a {ManagerChanged} event.\n Requirements:\n - the caller must be the current manager for `account`."
                  },
                  "functionSelector": "5df8122f",
                  "id": 1838,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setManager",
                  "nameLocation": "1257:10:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1833,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1276:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1838,
                        "src": "1268:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1268:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1835,
                        "mutability": "mutable",
                        "name": "newManager",
                        "nameLocation": "1293:10:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1838,
                        "src": "1285:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1834,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1285:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1267:37:8"
                  },
                  "returnParameters": {
                    "id": 1837,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1313:0:8"
                  },
                  "scope": 1917,
                  "src": "1248:66:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1839,
                    "nodeType": "StructuredDocumentation",
                    "src": "1320:90:8",
                    "text": " @dev Returns the manager for `account`.\n See {setManager}."
                  },
                  "functionSelector": "3d584063",
                  "id": 1846,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getManager",
                  "nameLocation": "1424:10:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1841,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1443:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1846,
                        "src": "1435:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:17:8"
                  },
                  "returnParameters": {
                    "id": 1845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1844,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1846,
                        "src": "1475:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1843,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1475:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1474:9:8"
                  },
                  "scope": 1917,
                  "src": "1415:69:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1847,
                    "nodeType": "StructuredDocumentation",
                    "src": "1490:815:8",
                    "text": " @dev Sets the `implementer` contract as ``account``'s implementer for\n `interfaceHash`.\n `account` being the zero address is an alias for the caller's address.\n The zero address can also be used in `implementer` to remove an old one.\n See {interfaceHash} to learn how these are created.\n Emits an {InterfaceImplementerSet} event.\n Requirements:\n - the caller must be the current manager for `account`.\n - `interfaceHash` must not be an {IERC165} interface id (i.e. it must not\n end in 28 zeroes).\n - `implementer` must implement {IERC1820Implementer} and return true when\n queried for support, unless `implementer` is the caller. See\n {IERC1820Implementer-canImplementInterfaceForAddress}."
                  },
                  "functionSelector": "29965a1d",
                  "id": 1856,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setInterfaceImplementer",
                  "nameLocation": "2319:23:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1849,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2360:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1856,
                        "src": "2352:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1848,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2352:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1851,
                        "mutability": "mutable",
                        "name": "_interfaceHash",
                        "nameLocation": "2385:14:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1856,
                        "src": "2377:22:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1850,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2377:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1853,
                        "mutability": "mutable",
                        "name": "implementer",
                        "nameLocation": "2417:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1856,
                        "src": "2409:19:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1852,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2409:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2342:92:8"
                  },
                  "returnParameters": {
                    "id": 1855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2443:0:8"
                  },
                  "scope": 1917,
                  "src": "2310:134:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1857,
                    "nodeType": "StructuredDocumentation",
                    "src": "2450:382:8",
                    "text": " @dev Returns the implementer of `interfaceHash` for `account`. If no such\n implementer is registered, returns the zero address.\n If `interfaceHash` is an {IERC165} interface id (i.e. it ends with 28\n zeroes), `account` will be queried for support of it.\n `account` being the zero address is an alias for the caller's address."
                  },
                  "functionSelector": "aabbb8ca",
                  "id": 1866,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getInterfaceImplementer",
                  "nameLocation": "2846:23:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1859,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2878:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1866,
                        "src": "2870:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2870:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1861,
                        "mutability": "mutable",
                        "name": "_interfaceHash",
                        "nameLocation": "2895:14:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1866,
                        "src": "2887:22:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1860,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2887:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2869:41:8"
                  },
                  "returnParameters": {
                    "id": 1865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1864,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1866,
                        "src": "2934:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1863,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2934:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2933:9:8"
                  },
                  "scope": 1917,
                  "src": "2837:106:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1867,
                    "nodeType": "StructuredDocumentation",
                    "src": "2949:196:8",
                    "text": " @dev Returns the interface hash for an `interfaceName`, as defined in the\n corresponding\n https://eips.ethereum.org/EIPS/eip-1820#interface-name[section of the EIP]."
                  },
                  "functionSelector": "65ba36c1",
                  "id": 1874,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "interfaceHash",
                  "nameLocation": "3159:13:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1869,
                        "mutability": "mutable",
                        "name": "interfaceName",
                        "nameLocation": "3189:13:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1874,
                        "src": "3173:29:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 1868,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3173:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3172:31:8"
                  },
                  "returnParameters": {
                    "id": 1873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1872,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1874,
                        "src": "3227:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1871,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3227:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3226:9:8"
                  },
                  "scope": 1917,
                  "src": "3150:86:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1875,
                    "nodeType": "StructuredDocumentation",
                    "src": "3242:260:8",
                    "text": " @notice Updates the cache with whether the contract implements an ERC165 interface or not.\n @param account Address of the contract for which to update the cache.\n @param interfaceId ERC165 interface for which to update the cache."
                  },
                  "functionSelector": "a41e7d51",
                  "id": 1882,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateERC165Cache",
                  "nameLocation": "3516:17:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1877,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3542:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1882,
                        "src": "3534:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1876,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3534:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1879,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "3558:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1882,
                        "src": "3551:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1878,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3551:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3533:37:8"
                  },
                  "returnParameters": {
                    "id": 1881,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3579:0:8"
                  },
                  "scope": 1917,
                  "src": "3507:73:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1883,
                    "nodeType": "StructuredDocumentation",
                    "src": "3586:536:8",
                    "text": " @notice Checks whether a contract implements an ERC165 interface or not.\n If the result is not cached a direct lookup on the contract address is performed.\n If the result is not cached or the cached value is out-of-date, the cache MUST be updated manually by calling\n {updateERC165Cache} with the contract address.\n @param account Address of the contract to check.\n @param interfaceId ERC165 interface to check.\n @return True if `account` implements `interfaceId`, false otherwise."
                  },
                  "functionSelector": "f712f3e8",
                  "id": 1892,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementsERC165Interface",
                  "nameLocation": "4136:25:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1885,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "4170:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1892,
                        "src": "4162:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1884,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4162:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1887,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "4186:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1892,
                        "src": "4179:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1886,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4179:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4161:37:8"
                  },
                  "returnParameters": {
                    "id": 1891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1890,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1892,
                        "src": "4222:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1889,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4222:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4221:6:8"
                  },
                  "scope": 1917,
                  "src": "4127:101:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1893,
                    "nodeType": "StructuredDocumentation",
                    "src": "4234:313:8",
                    "text": " @notice Checks whether a contract implements an ERC165 interface or not without using nor updating the cache.\n @param account Address of the contract to check.\n @param interfaceId ERC165 interface to check.\n @return True if `account` implements `interfaceId`, false otherwise."
                  },
                  "functionSelector": "b7056765",
                  "id": 1902,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementsERC165InterfaceNoCache",
                  "nameLocation": "4561:32:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1895,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "4602:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1902,
                        "src": "4594:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4594:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1897,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "4618:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1902,
                        "src": "4611:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1896,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4593:37:8"
                  },
                  "returnParameters": {
                    "id": 1901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1900,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1902,
                        "src": "4654:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1899,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4654:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4653:6:8"
                  },
                  "scope": 1917,
                  "src": "4552:108:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "id": 1910,
                  "name": "InterfaceImplementerSet",
                  "nameLocation": "4672:23:8",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1904,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "4712:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1910,
                        "src": "4696:23:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1903,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4696:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1906,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "interfaceHash",
                        "nameLocation": "4737:13:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1910,
                        "src": "4721:29:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1905,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4721:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1908,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementer",
                        "nameLocation": "4768:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1910,
                        "src": "4752:27:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4752:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4695:85:8"
                  },
                  "src": "4666:115:8"
                },
                {
                  "anonymous": false,
                  "id": 1916,
                  "name": "ManagerChanged",
                  "nameLocation": "4793:14:8",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1912,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "4824:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1916,
                        "src": "4808:23:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1911,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4808:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1914,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newManager",
                        "nameLocation": "4849:10:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1916,
                        "src": "4833:26:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1913,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4833:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4807:53:8"
                  },
                  "src": "4787:74:8"
                }
              ],
              "scope": 1918,
              "src": "754:4109:8",
              "usedErrors": []
            }
          ],
          "src": "109:4755:8"
        },
        "id": 8
      },
      "contracts/protocol/integration/wrap/notional/WrappedfCash.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/wrap/notional/WrappedfCash.sol",
          "exportedSymbols": {
            "INotionalV2": [
              7474
            ],
            "IWETH9": [
              7263
            ],
            "WrappedfCash": [
              1942
            ],
            "wfCashERC4626": [
              6281
            ]
          },
          "id": 1943,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1919,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:9"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/wfCashERC4626.sol",
              "file": "wrapped-fcash/contracts/wfCashERC4626.sol",
              "id": 1921,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1943,
              "sourceUnit": 6282,
              "src": "56:74:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1920,
                    "name": "wfCashERC4626",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "65:13:9",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/notional/INotionalV2.sol",
              "file": "wrapped-fcash/interfaces/notional/INotionalV2.sol",
              "id": 1923,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1943,
              "sourceUnit": 7475,
              "src": "131:80:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1922,
                    "name": "INotionalV2",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "140:11:9",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/IWETH9.sol",
              "file": "wrapped-fcash/interfaces/IWETH9.sol",
              "id": 1925,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1943,
              "sourceUnit": 7264,
              "src": "212:61:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1924,
                    "name": "IWETH9",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "221:6:9",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1926,
                    "name": "wfCashERC4626",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6281,
                    "src": "300:13:9"
                  },
                  "id": 1927,
                  "nodeType": "InheritanceSpecifier",
                  "src": "300:13:9"
                }
              ],
              "canonicalName": "WrappedfCash",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 1942,
              "linearizedBaseContracts": [
                1942,
                6281,
                7082,
                2685,
                5560,
                7606,
                1343,
                151,
                1542,
                1827,
                73,
                7243
              ],
              "name": "WrappedfCash",
              "nameLocation": "284:12:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1940,
                    "nodeType": "Block",
                    "src": "410:7:9",
                    "statements": []
                  },
                  "id": 1941,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1936,
                          "name": "_notionalProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1930,
                          "src": "388:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        {
                          "id": 1937,
                          "name": "_weth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1933,
                          "src": "404:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        }
                      ],
                      "id": 1938,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 1935,
                        "name": "wfCashERC4626",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6281,
                        "src": "374:13:9"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "374:36:9"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1930,
                        "mutability": "mutable",
                        "name": "_notionalProxy",
                        "nameLocation": "344:14:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1941,
                        "src": "332:26:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                          "typeString": "contract INotionalV2"
                        },
                        "typeName": {
                          "id": 1929,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1928,
                            "name": "INotionalV2",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7474,
                            "src": "332:11:9"
                          },
                          "referencedDeclaration": 7474,
                          "src": "332:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1933,
                        "mutability": "mutable",
                        "name": "_weth",
                        "nameLocation": "367:5:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1941,
                        "src": "360:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH9_$7263",
                          "typeString": "contract IWETH9"
                        },
                        "typeName": {
                          "id": 1932,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1931,
                            "name": "IWETH9",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7263,
                            "src": "360:6:9"
                          },
                          "referencedDeclaration": 7263,
                          "src": "360:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "331:42:9"
                  },
                  "returnParameters": {
                    "id": 1939,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "410:0:9"
                  },
                  "scope": 1942,
                  "src": "320:97:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 1943,
              "src": "275:144:9",
              "usedErrors": []
            }
          ],
          "src": "32:388:9"
        },
        "id": 9
      },
      "contracts/protocol/integration/wrap/notional/WrappedfCashFactory.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/wrap/notional/WrappedfCashFactory.sol",
          "exportedSymbols": {
            "WrappedfCashFactory": [
              1958
            ],
            "WrappedfCashFactoryBase": [
              5087
            ]
          },
          "id": 1959,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1944,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:10"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol",
              "file": "wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol",
              "id": 1946,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1959,
              "sourceUnit": 5088,
              "src": "56:119:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1945,
                    "name": "WrappedfCashFactory",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "65:19:10",
                    "typeDescriptions": {}
                  },
                  "local": "WrappedfCashFactoryBase",
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1947,
                    "name": "WrappedfCashFactoryBase",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5087,
                    "src": "209:23:10"
                  },
                  "id": 1948,
                  "nodeType": "InheritanceSpecifier",
                  "src": "209:23:10"
                }
              ],
              "canonicalName": "WrappedfCashFactory",
              "contractDependencies": [
                5110
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 1958,
              "linearizedBaseContracts": [
                1958,
                5087
              ],
              "name": "WrappedfCashFactory",
              "nameLocation": "186:19:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1956,
                    "nodeType": "Block",
                    "src": "300:7:10",
                    "statements": []
                  },
                  "id": 1957,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1953,
                          "name": "_beacon",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1950,
                          "src": "292:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 1954,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 1952,
                        "name": "WrappedfCashFactoryBase",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5087,
                        "src": "268:23:10"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "268:32:10"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1950,
                        "mutability": "mutable",
                        "name": "_beacon",
                        "nameLocation": "259:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1957,
                        "src": "251:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "251:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "250:17:10"
                  },
                  "returnParameters": {
                    "id": 1955,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "300:0:10"
                  },
                  "scope": 1958,
                  "src": "239:68:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 1959,
              "src": "177:132:10",
              "usedErrors": []
            }
          ],
          "src": "32:278:10"
        },
        "id": 10
      },
      "contracts/protocol/integration/wrap/notional/nBeaconProxy.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/wrap/notional/nBeaconProxy.sol",
          "exportedSymbols": {
            "nBeaconProxy": [
              1977
            ],
            "nBeaconProxyBase": [
              5110
            ]
          },
          "id": 1978,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1960,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:11"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/proxy/nBeaconProxy.sol",
              "file": "wrapped-fcash/contracts/proxy/nBeaconProxy.sol",
              "id": 1962,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1978,
              "sourceUnit": 5111,
              "src": "56:98:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1961,
                    "name": "nBeaconProxy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "65:12:11",
                    "typeDescriptions": {}
                  },
                  "local": "nBeaconProxyBase",
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1963,
                    "name": "nBeaconProxyBase",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5110,
                    "src": "181:16:11"
                  },
                  "id": 1964,
                  "nodeType": "InheritanceSpecifier",
                  "src": "181:16:11"
                }
              ],
              "canonicalName": "nBeaconProxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 1977,
              "linearizedBaseContracts": [
                1977,
                5110,
                2560,
                2426,
                2478
              ],
              "name": "nBeaconProxy",
              "nameLocation": "165:12:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1975,
                    "nodeType": "Block",
                    "src": "290:3:11",
                    "statements": []
                  },
                  "id": 1976,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1971,
                          "name": "beacon",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1966,
                          "src": "276:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 1972,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1968,
                          "src": "284:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 1973,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 1970,
                        "name": "nBeaconProxyBase",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5110,
                        "src": "259:16:11"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "259:30:11"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1966,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "224:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1976,
                        "src": "216:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1965,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "216:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1968,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "245:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1976,
                        "src": "232:17:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1967,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "232:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "215:35:11"
                  },
                  "returnParameters": {
                    "id": 1974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "290:0:11"
                  },
                  "scope": 1977,
                  "src": "204:89:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 1978,
              "src": "156:139:11",
              "usedErrors": []
            }
          ],
          "src": "32:264:11"
        },
        "id": 11
      },
      "contracts/protocol/integration/wrap/notional/nUpgradeableBeacon.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/wrap/notional/nUpgradeableBeacon.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "Context": [
              3488
            ],
            "IBeacon": [
              2570
            ],
            "Ownable": [
              2098
            ],
            "UpgradeableBeacon": [
              2645
            ],
            "nUpgradeableBeacon": [
              1993
            ]
          },
          "id": 1994,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1979,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:12"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol",
              "file": "openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol",
              "id": 1980,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1994,
              "sourceUnit": 2646,
              "src": "57:70:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1982,
                    "name": "UpgradeableBeacon",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2645,
                    "src": "275:17:12"
                  },
                  "id": 1983,
                  "nodeType": "InheritanceSpecifier",
                  "src": "275:17:12"
                }
              ],
              "canonicalName": "nUpgradeableBeacon",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1981,
                "nodeType": "StructuredDocumentation",
                "src": "129:115:12",
                "text": "@dev Re-exporting to make available to brownie\n UpgradeableBeacon is Ownable, default owner is the deployer"
              },
              "fullyImplemented": true,
              "id": 1993,
              "linearizedBaseContracts": [
                1993,
                2645,
                2098,
                3488,
                2570
              ],
              "name": "nUpgradeableBeacon",
              "nameLocation": "253:18:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 1991,
                    "nodeType": "Block",
                    "src": "371:2:12",
                    "statements": []
                  },
                  "id": 1992,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 1988,
                          "name": "implementation_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1985,
                          "src": "354:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 1989,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 1987,
                        "name": "UpgradeableBeacon",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2645,
                        "src": "336:17:12"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "336:34:12"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1985,
                        "mutability": "mutable",
                        "name": "implementation_",
                        "nameLocation": "319:15:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 1992,
                        "src": "311:23:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1984,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "310:25:12"
                  },
                  "returnParameters": {
                    "id": 1990,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "371:0:12"
                  },
                  "scope": 1993,
                  "src": "299:74:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 1994,
              "src": "244:131:12",
              "usedErrors": []
            }
          ],
          "src": "32:345:12"
        },
        "id": 12
      },
      "openzeppelin-contracts-V4/access/Ownable.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/access/Ownable.sol",
          "exportedSymbols": {
            "Context": [
              3488
            ],
            "Ownable": [
              2098
            ]
          },
          "id": 2099,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1995,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "87:23:13"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/Context.sol",
              "file": "../utils/Context.sol",
              "id": 1996,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2099,
              "sourceUnit": 3489,
              "src": "112:30:13",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1998,
                    "name": "Context",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3488,
                    "src": "668:7:13"
                  },
                  "id": 1999,
                  "nodeType": "InheritanceSpecifier",
                  "src": "668:7:13"
                }
              ],
              "canonicalName": "Ownable",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1997,
                "nodeType": "StructuredDocumentation",
                "src": "144:494:13",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 2098,
              "linearizedBaseContracts": [
                2098,
                3488
              ],
              "name": "Ownable",
              "nameLocation": "657:7:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 2001,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nameLocation": "698:6:13",
                  "nodeType": "VariableDeclaration",
                  "scope": 2098,
                  "src": "682:22:13",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2000,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "682:7:13",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "id": 2007,
                  "name": "OwnershipTransferred",
                  "nameLocation": "717:20:13",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2003,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "754:13:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2007,
                        "src": "738:29:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2002,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2005,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "785:8:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2007,
                        "src": "769:24:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "769:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:57:13"
                  },
                  "src": "711:84:13"
                },
                {
                  "body": {
                    "id": 2016,
                    "nodeType": "Block",
                    "src": "911:49:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2012,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3478,
                                "src": "940:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 2013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "940:12:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2011,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2097,
                            "src": "921:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "921:32:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2015,
                        "nodeType": "ExpressionStatement",
                        "src": "921:32:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2008,
                    "nodeType": "StructuredDocumentation",
                    "src": "801:91:13",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 2017,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "908:2:13"
                  },
                  "returnParameters": {
                    "id": 2010,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "911:0:13"
                  },
                  "scope": 2098,
                  "src": "897:63:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2025,
                    "nodeType": "Block",
                    "src": "1091:30:13",
                    "statements": [
                      {
                        "expression": {
                          "id": 2023,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2001,
                          "src": "1108:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2022,
                        "id": 2024,
                        "nodeType": "Return",
                        "src": "1101:13:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2018,
                    "nodeType": "StructuredDocumentation",
                    "src": "966:65:13",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 2026,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nameLocation": "1045:5:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2019,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1050:2:13"
                  },
                  "returnParameters": {
                    "id": 2022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2021,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2026,
                        "src": "1082:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2020,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1082:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1081:9:13"
                  },
                  "scope": 2098,
                  "src": "1036:85:13",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2039,
                    "nodeType": "Block",
                    "src": "1230:96:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2030,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2026,
                                  "src": "1248:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 2031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1248:7:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2032,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3478,
                                  "src": "1259:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 2033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1259:12:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1248:23:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 2035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1273:34:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 2029,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1240:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1240:68:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2037,
                        "nodeType": "ExpressionStatement",
                        "src": "1240:68:13"
                      },
                      {
                        "id": 2038,
                        "nodeType": "PlaceholderStatement",
                        "src": "1318:1:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2027,
                    "nodeType": "StructuredDocumentation",
                    "src": "1127:77:13",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 2040,
                  "name": "onlyOwner",
                  "nameLocation": "1218:9:13",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 2028,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1227:2:13"
                  },
                  "src": "1209:117:13",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2053,
                    "nodeType": "Block",
                    "src": "1722:47:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 2049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1759:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1751:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2047,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1751:7:13",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1751:10:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2046,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2097,
                            "src": "1732:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1732:30:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2052,
                        "nodeType": "ExpressionStatement",
                        "src": "1732:30:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2041,
                    "nodeType": "StructuredDocumentation",
                    "src": "1332:331:13",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 2054,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2044,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2043,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2040,
                        "src": "1712:9:13"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1712:9:13"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nameLocation": "1677:17:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2042,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1694:2:13"
                  },
                  "returnParameters": {
                    "id": 2045,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1722:0:13"
                  },
                  "scope": 2098,
                  "src": "1668:101:13",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2076,
                    "nodeType": "Block",
                    "src": "1988:128:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2063,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2057,
                                "src": "2006:8:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2066,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2026:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2065,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2018:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2064,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2018:7:13",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2018:10:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2006:22:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 2069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2030:40:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 2062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1998:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1998:73:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2071,
                        "nodeType": "ExpressionStatement",
                        "src": "1998:73:13"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2073,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2057,
                              "src": "2100:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2072,
                            "name": "_transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2097,
                            "src": "2081:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2081:28:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2075,
                        "nodeType": "ExpressionStatement",
                        "src": "2081:28:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2055,
                    "nodeType": "StructuredDocumentation",
                    "src": "1775:138:13",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 2077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2060,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2059,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2040,
                        "src": "1978:9:13"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1978:9:13"
                    }
                  ],
                  "name": "transferOwnership",
                  "nameLocation": "1927:17:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2057,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "1953:8:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2077,
                        "src": "1945:16:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2056,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1945:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1944:18:13"
                  },
                  "returnParameters": {
                    "id": 2061,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1988:0:13"
                  },
                  "scope": 2098,
                  "src": "1918:198:13",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2096,
                    "nodeType": "Block",
                    "src": "2333:124:13",
                    "statements": [
                      {
                        "assignments": [
                          2084
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2084,
                            "mutability": "mutable",
                            "name": "oldOwner",
                            "nameLocation": "2351:8:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 2096,
                            "src": "2343:16:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2083,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2343:7:13",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2086,
                        "initialValue": {
                          "id": 2085,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2001,
                          "src": "2362:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2343:25:13"
                      },
                      {
                        "expression": {
                          "id": 2089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2087,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2001,
                            "src": "2378:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2088,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2080,
                            "src": "2387:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2378:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2090,
                        "nodeType": "ExpressionStatement",
                        "src": "2378:17:13"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2092,
                              "name": "oldOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2084,
                              "src": "2431:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2093,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2080,
                              "src": "2441:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2091,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2007,
                            "src": "2410:20:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 2094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2410:40:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2095,
                        "nodeType": "EmitStatement",
                        "src": "2405:45:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2078,
                    "nodeType": "StructuredDocumentation",
                    "src": "2122:143:13",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
                  },
                  "id": 2097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferOwnership",
                  "nameLocation": "2279:18:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2080,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "2306:8:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2097,
                        "src": "2298:16:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2079,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2298:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2297:18:13"
                  },
                  "returnParameters": {
                    "id": 2082,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2333:0:13"
                  },
                  "scope": 2098,
                  "src": "2270:187:13",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2099,
              "src": "639:1820:13",
              "usedErrors": []
            }
          ],
          "src": "87:2373:13"
        },
        "id": 13
      },
      "openzeppelin-contracts-V4/interfaces/draft-IERC1822.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/interfaces/draft-IERC1822.sol",
          "exportedSymbols": {
            "IERC1822Proxiable": [
              2108
            ]
          },
          "id": 2109,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2100,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:23:14"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1822Proxiable",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2101,
                "nodeType": "StructuredDocumentation",
                "src": "138:203:14",
                "text": " @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."
              },
              "fullyImplemented": false,
              "id": 2108,
              "linearizedBaseContracts": [
                2108
              ],
              "name": "IERC1822Proxiable",
              "nameLocation": "352:17:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2102,
                    "nodeType": "StructuredDocumentation",
                    "src": "376:438:14",
                    "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."
                  },
                  "functionSelector": "52d1902d",
                  "id": 2107,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "proxiableUUID",
                  "nameLocation": "828:13:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2103,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "841:2:14"
                  },
                  "returnParameters": {
                    "id": 2106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2105,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2107,
                        "src": "867:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2104,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "867:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "866:9:14"
                  },
                  "scope": 2108,
                  "src": "819:57:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2109,
              "src": "342:536:14",
              "usedErrors": []
            }
          ],
          "src": "113:766:14"
        },
        "id": 14
      },
      "openzeppelin-contracts-V4/proxy/ERC1967/ERC1967Upgrade.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/proxy/ERC1967/ERC1967Upgrade.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "ERC1967Upgrade": [
              2426
            ],
            "IBeacon": [
              2570
            ],
            "IERC1822Proxiable": [
              2108
            ],
            "StorageSlot": [
              3659
            ]
          },
          "id": 2427,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2110,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "116:23:15"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol",
              "file": "../beacon/IBeacon.sol",
              "id": 2111,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2427,
              "sourceUnit": 2571,
              "src": "141:31:15",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/interfaces/draft-IERC1822.sol",
              "file": "../../interfaces/draft-IERC1822.sol",
              "id": 2112,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2427,
              "sourceUnit": 2109,
              "src": "173:45:15",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 2113,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2427,
              "sourceUnit": 3467,
              "src": "219:33:15",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/StorageSlot.sol",
              "file": "../../utils/StorageSlot.sol",
              "id": 2114,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2427,
              "sourceUnit": 3660,
              "src": "253:37:15",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "ERC1967Upgrade",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2115,
                "nodeType": "StructuredDocumentation",
                "src": "292:236:15",
                "text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._\n @custom:oz-upgrades-unsafe-allow delegatecall"
              },
              "fullyImplemented": true,
              "id": 2426,
              "linearizedBaseContracts": [
                2426
              ],
              "name": "ERC1967Upgrade",
              "nameLocation": "547:14:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 2118,
                  "mutability": "constant",
                  "name": "_ROLLBACK_SLOT",
                  "nameLocation": "672:14:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 2426,
                  "src": "647:108:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "647:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433",
                    "id": 2117,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "689:66:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1",
                      "typeString": "int_const 3304...(69 digits omitted)...9347"
                    },
                    "value": "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 2119,
                    "nodeType": "StructuredDocumentation",
                    "src": "762:214:15",
                    "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 2122,
                  "mutability": "constant",
                  "name": "_IMPLEMENTATION_SLOT",
                  "nameLocation": "1007:20:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 2426,
                  "src": "981:115:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2120,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "981:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263",
                    "id": 2121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1030:66:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1",
                      "typeString": "int_const 2444...(69 digits omitted)...5612"
                    },
                    "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2123,
                    "nodeType": "StructuredDocumentation",
                    "src": "1103:68:15",
                    "text": " @dev Emitted when the implementation is upgraded."
                  },
                  "id": 2127,
                  "name": "Upgraded",
                  "nameLocation": "1182:8:15",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2125,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "1207:14:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2127,
                        "src": "1191:30:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2124,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1190:32:15"
                  },
                  "src": "1176:47:15"
                },
                {
                  "body": {
                    "id": 2139,
                    "nodeType": "Block",
                    "src": "1363:78:15",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 2135,
                                "name": "_IMPLEMENTATION_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2122,
                                "src": "1407:20:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 2133,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3659,
                                "src": "1380:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 2134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3625,
                              "src": "1380:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3605_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                              }
                            },
                            "id": 2136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1380:48:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                              "typeString": "struct StorageSlot.AddressSlot storage pointer"
                            }
                          },
                          "id": 2137,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3604,
                          "src": "1380:54:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2132,
                        "id": 2138,
                        "nodeType": "Return",
                        "src": "1373:61:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2128,
                    "nodeType": "StructuredDocumentation",
                    "src": "1229:67:15",
                    "text": " @dev Returns the current implementation address."
                  },
                  "id": 2140,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getImplementation",
                  "nameLocation": "1310:18:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1328:2:15"
                  },
                  "returnParameters": {
                    "id": 2132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2131,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2140,
                        "src": "1354:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1354:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1353:9:15"
                  },
                  "scope": 2426,
                  "src": "1301:140:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2163,
                    "nodeType": "Block",
                    "src": "1595:196:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2149,
                                  "name": "newImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2143,
                                  "src": "1632:17:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 2147,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3466,
                                  "src": "1613:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 2148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3189,
                                "src": "1613:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1613:37:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 2151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1652:47:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65",
                                "typeString": "literal_string \"ERC1967: new implementation is not a contract\""
                              },
                              "value": "ERC1967: new implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65",
                                "typeString": "literal_string \"ERC1967: new implementation is not a contract\""
                              }
                            ],
                            "id": 2146,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1605:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1605:95:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2153,
                        "nodeType": "ExpressionStatement",
                        "src": "1605:95:15"
                      },
                      {
                        "expression": {
                          "id": 2161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2157,
                                  "name": "_IMPLEMENTATION_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2122,
                                  "src": "1737:20:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 2154,
                                  "name": "StorageSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3659,
                                  "src": "1710:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                    "typeString": "type(library StorageSlot)"
                                  }
                                },
                                "id": 2156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3625,
                                "src": "1710:26:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3605_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                                }
                              },
                              "id": 2158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1710:48:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                                "typeString": "struct StorageSlot.AddressSlot storage pointer"
                              }
                            },
                            "id": 2159,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3604,
                            "src": "1710:54:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2160,
                            "name": "newImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2143,
                            "src": "1767:17:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1710:74:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2162,
                        "nodeType": "ExpressionStatement",
                        "src": "1710:74:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2141,
                    "nodeType": "StructuredDocumentation",
                    "src": "1447:80:15",
                    "text": " @dev Stores a new address in the EIP1967 implementation slot."
                  },
                  "id": 2164,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nameLocation": "1541:18:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2143,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1568:17:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2164,
                        "src": "1560:25:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2142,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1560:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1559:27:15"
                  },
                  "returnParameters": {
                    "id": 2145,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1595:0:15"
                  },
                  "scope": 2426,
                  "src": "1532:259:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2178,
                    "nodeType": "Block",
                    "src": "1953:96:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2171,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2167,
                              "src": "1982:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2170,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2164,
                            "src": "1963:18:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1963:37:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2173,
                        "nodeType": "ExpressionStatement",
                        "src": "1963:37:15"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2175,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2167,
                              "src": "2024:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2174,
                            "name": "Upgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2127,
                            "src": "2015:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2015:27:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2177,
                        "nodeType": "EmitStatement",
                        "src": "2010:32:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2165,
                    "nodeType": "StructuredDocumentation",
                    "src": "1797:95:15",
                    "text": " @dev Perform implementation upgrade\n Emits an {Upgraded} event."
                  },
                  "id": 2179,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeTo",
                  "nameLocation": "1906:10:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2167,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1925:17:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2179,
                        "src": "1917:25:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2166,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1917:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1916:27:15"
                  },
                  "returnParameters": {
                    "id": 2169,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1953:0:15"
                  },
                  "scope": 2426,
                  "src": "1897:152:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2208,
                    "nodeType": "Block",
                    "src": "2311:167:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2190,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2182,
                              "src": "2332:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2189,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2179,
                            "src": "2321:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2321:29:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2192,
                        "nodeType": "ExpressionStatement",
                        "src": "2321:29:15"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2193,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2184,
                                "src": "2364:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2364:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 2195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2378:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2364:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 2197,
                            "name": "forceCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2186,
                            "src": "2383:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2364:28:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2207,
                        "nodeType": "IfStatement",
                        "src": "2360:112:15",
                        "trueBody": {
                          "id": 2206,
                          "nodeType": "Block",
                          "src": "2394:78:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2202,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2182,
                                    "src": "2437:17:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2203,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2184,
                                    "src": "2456:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2199,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3466,
                                    "src": "2408:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 2201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "functionDelegateCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3399,
                                  "src": "2408:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (address,bytes memory) returns (bytes memory)"
                                  }
                                },
                                "id": 2204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2408:53:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2205,
                              "nodeType": "ExpressionStatement",
                              "src": "2408:53:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2180,
                    "nodeType": "StructuredDocumentation",
                    "src": "2055:123:15",
                    "text": " @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."
                  },
                  "id": 2209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeToAndCall",
                  "nameLocation": "2192:17:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2182,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2227:17:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "2219:25:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2181,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2219:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2184,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2267:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "2254:17:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2183,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2254:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2186,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "2286:9:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2209,
                        "src": "2281:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2185,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2281:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2209:92:15"
                  },
                  "returnParameters": {
                    "id": 2188,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2311:0:15"
                  },
                  "scope": 2426,
                  "src": "2183:295:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2261,
                    "nodeType": "Block",
                    "src": "2782:820:15",
                    "statements": [
                      {
                        "condition": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 2221,
                                "name": "_ROLLBACK_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2118,
                                "src": "3123:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 2219,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3659,
                                "src": "3096:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 2220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBooleanSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3636,
                              "src": "3096:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$3608_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"
                              }
                            },
                            "id": 2222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3096:42:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BooleanSlot_$3608_storage_ptr",
                              "typeString": "struct StorageSlot.BooleanSlot storage pointer"
                            }
                          },
                          "id": 2223,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3607,
                          "src": "3096:48:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2259,
                          "nodeType": "Block",
                          "src": "3214:382:15",
                          "statements": [
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 2244,
                                    "nodeType": "Block",
                                    "src": "3308:115:15",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              "id": 2240,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 2238,
                                                "name": "slot",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2235,
                                                "src": "3334:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "id": 2239,
                                                "name": "_IMPLEMENTATION_SLOT",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2122,
                                                "src": "3342:20:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "src": "3334:28:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            {
                                              "hexValue": "45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944",
                                              "id": 2241,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3364:43:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c",
                                                "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""
                                              },
                                              "value": "ERC1967Upgrade: unsupported proxiableUUID"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              {
                                                "typeIdentifier": "t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c",
                                                "typeString": "literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""
                                              }
                                            ],
                                            "id": 2237,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -18,
                                              -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3326:7:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (bool,string memory) pure"
                                            }
                                          },
                                          "id": 2242,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3326:82:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 2243,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3326:82:15"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 2245,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 2236,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 2235,
                                        "mutability": "mutable",
                                        "name": "slot",
                                        "nameLocation": "3302:4:15",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 2245,
                                        "src": "3294:12:15",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 2234,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3294:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "3293:14:15"
                                  },
                                  "src": "3285:138:15"
                                },
                                {
                                  "block": {
                                    "id": 2250,
                                    "nodeType": "Block",
                                    "src": "3430:89:15",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053",
                                              "id": 2247,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "3455:48:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24",
                                                "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""
                                              },
                                              "value": "ERC1967Upgrade: new implementation is not UUPS"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24",
                                                "typeString": "literal_string \"ERC1967Upgrade: new implementation is not UUPS\""
                                              }
                                            ],
                                            "id": 2246,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "3448:6:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 2248,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3448:56:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 2249,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3448:56:15"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 2251,
                                  "nodeType": "TryCatchClause",
                                  "src": "3424:95:15"
                                }
                              ],
                              "externalCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2230,
                                        "name": "newImplementation",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2212,
                                        "src": "3250:17:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2229,
                                      "name": "IERC1822Proxiable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2108,
                                      "src": "3232:17:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1822Proxiable_$2108_$",
                                        "typeString": "type(contract IERC1822Proxiable)"
                                      }
                                    },
                                    "id": 2231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3232:36:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1822Proxiable_$2108",
                                      "typeString": "contract IERC1822Proxiable"
                                    }
                                  },
                                  "id": 2232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "proxiableUUID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2107,
                                  "src": "3232:50:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32)"
                                  }
                                },
                                "id": 2233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3232:52:15",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 2252,
                              "nodeType": "TryStatement",
                              "src": "3228:291:15"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2254,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2212,
                                    "src": "3550:17:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2255,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2214,
                                    "src": "3569:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 2256,
                                    "name": "forceCall",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2216,
                                    "src": "3575:9:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2253,
                                  "name": "_upgradeToAndCall",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2209,
                                  "src": "3532:17:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,bytes memory,bool)"
                                  }
                                },
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3532:53:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2258,
                              "nodeType": "ExpressionStatement",
                              "src": "3532:53:15"
                            }
                          ]
                        },
                        "id": 2260,
                        "nodeType": "IfStatement",
                        "src": "3092:504:15",
                        "trueBody": {
                          "id": 2228,
                          "nodeType": "Block",
                          "src": "3146:62:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2225,
                                    "name": "newImplementation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2212,
                                    "src": "3179:17:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2224,
                                  "name": "_setImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2164,
                                  "src": "3160:18:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 2226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3160:37:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2227,
                              "nodeType": "ExpressionStatement",
                              "src": "3160:37:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2210,
                    "nodeType": "StructuredDocumentation",
                    "src": "2484:161:15",
                    "text": " @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."
                  },
                  "id": 2262,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeToAndCallUUPS",
                  "nameLocation": "2659:21:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2212,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "2698:17:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2262,
                        "src": "2690:25:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2211,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2690:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2214,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2738:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2262,
                        "src": "2725:17:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2213,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2725:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2216,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "2757:9:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2262,
                        "src": "2752:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2215,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2752:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2680:92:15"
                  },
                  "returnParameters": {
                    "id": 2218,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2782:0:15"
                  },
                  "scope": 2426,
                  "src": "2650:952:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 2263,
                    "nodeType": "StructuredDocumentation",
                    "src": "3608:189:15",
                    "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 2266,
                  "mutability": "constant",
                  "name": "_ADMIN_SLOT",
                  "nameLocation": "3828:11:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 2426,
                  "src": "3802:106:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2264,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3802:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033",
                    "id": 2265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3842:66:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1",
                      "typeString": "int_const 8195...(69 digits omitted)...7091"
                    },
                    "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2267,
                    "nodeType": "StructuredDocumentation",
                    "src": "3915:67:15",
                    "text": " @dev Emitted when the admin account has changed."
                  },
                  "id": 2273,
                  "name": "AdminChanged",
                  "nameLocation": "3993:12:15",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2269,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "previousAdmin",
                        "nameLocation": "4014:13:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2273,
                        "src": "4006:21:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4006:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2271,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4037:8:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2273,
                        "src": "4029:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2270,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4029:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4005:41:15"
                  },
                  "src": "3987:60:15"
                },
                {
                  "body": {
                    "id": 2285,
                    "nodeType": "Block",
                    "src": "4161:69:15",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 2281,
                                "name": "_ADMIN_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2266,
                                "src": "4205:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 2279,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3659,
                                "src": "4178:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 2280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3625,
                              "src": "4178:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3605_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                              }
                            },
                            "id": 2282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4178:39:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                              "typeString": "struct StorageSlot.AddressSlot storage pointer"
                            }
                          },
                          "id": 2283,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3604,
                          "src": "4178:45:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2278,
                        "id": 2284,
                        "nodeType": "Return",
                        "src": "4171:52:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2274,
                    "nodeType": "StructuredDocumentation",
                    "src": "4053:50:15",
                    "text": " @dev Returns the current admin."
                  },
                  "id": 2286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAdmin",
                  "nameLocation": "4117:9:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4126:2:15"
                  },
                  "returnParameters": {
                    "id": 2278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2277,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2286,
                        "src": "4152:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4152:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4151:9:15"
                  },
                  "scope": 2426,
                  "src": "4108:122:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2311,
                    "nodeType": "Block",
                    "src": "4357:156:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2293,
                                "name": "newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2289,
                                "src": "4375:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4395:1:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2295,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4387:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2294,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4387:7:15",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4387:10:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4375:22:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373",
                              "id": 2299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4399:40:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5",
                                "typeString": "literal_string \"ERC1967: new admin is the zero address\""
                              },
                              "value": "ERC1967: new admin is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5",
                                "typeString": "literal_string \"ERC1967: new admin is the zero address\""
                              }
                            ],
                            "id": 2292,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4367:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4367:73:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2301,
                        "nodeType": "ExpressionStatement",
                        "src": "4367:73:15"
                      },
                      {
                        "expression": {
                          "id": 2309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2305,
                                  "name": "_ADMIN_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2266,
                                  "src": "4477:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 2302,
                                  "name": "StorageSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3659,
                                  "src": "4450:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                    "typeString": "type(library StorageSlot)"
                                  }
                                },
                                "id": 2304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3625,
                                "src": "4450:26:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3605_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                                }
                              },
                              "id": 2306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4450:39:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                                "typeString": "struct StorageSlot.AddressSlot storage pointer"
                              }
                            },
                            "id": 2307,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3604,
                            "src": "4450:45:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2308,
                            "name": "newAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2289,
                            "src": "4498:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4450:56:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2310,
                        "nodeType": "ExpressionStatement",
                        "src": "4450:56:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2287,
                    "nodeType": "StructuredDocumentation",
                    "src": "4236:71:15",
                    "text": " @dev Stores a new address in the EIP1967 admin slot."
                  },
                  "id": 2312,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setAdmin",
                  "nameLocation": "4321:9:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2289,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4339:8:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2312,
                        "src": "4331:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2288,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4331:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4330:18:15"
                  },
                  "returnParameters": {
                    "id": 2291,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4357:0:15"
                  },
                  "scope": 2426,
                  "src": "4312:201:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2328,
                    "nodeType": "Block",
                    "src": "4673:86:15",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2319,
                                "name": "_getAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2286,
                                "src": "4701:9:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 2320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4701:11:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2321,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2315,
                              "src": "4714:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2318,
                            "name": "AdminChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2273,
                            "src": "4688:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 2322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4688:35:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2323,
                        "nodeType": "EmitStatement",
                        "src": "4683:40:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2325,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2315,
                              "src": "4743:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2324,
                            "name": "_setAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2312,
                            "src": "4733:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4733:19:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2327,
                        "nodeType": "ExpressionStatement",
                        "src": "4733:19:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2313,
                    "nodeType": "StructuredDocumentation",
                    "src": "4519:100:15",
                    "text": " @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."
                  },
                  "id": 2329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_changeAdmin",
                  "nameLocation": "4633:12:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2315,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nameLocation": "4654:8:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2329,
                        "src": "4646:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4646:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4645:18:15"
                  },
                  "returnParameters": {
                    "id": 2317,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4673:0:15"
                  },
                  "scope": 2426,
                  "src": "4624:135:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 2330,
                    "nodeType": "StructuredDocumentation",
                    "src": "4765:232:15",
                    "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."
                  },
                  "id": 2333,
                  "mutability": "constant",
                  "name": "_BEACON_SLOT",
                  "nameLocation": "5028:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 2426,
                  "src": "5002:107:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2331,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5002:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530",
                    "id": 2332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5043:66:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1",
                      "typeString": "int_const 7415...(69 digits omitted)...4704"
                    },
                    "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2334,
                    "nodeType": "StructuredDocumentation",
                    "src": "5116:60:15",
                    "text": " @dev Emitted when the beacon is upgraded."
                  },
                  "id": 2338,
                  "name": "BeaconUpgraded",
                  "nameLocation": "5187:14:15",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2336,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "5218:6:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2338,
                        "src": "5202:22:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5202:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5201:24:15"
                  },
                  "src": "5181:45:15"
                },
                {
                  "body": {
                    "id": 2350,
                    "nodeType": "Block",
                    "src": "5342:70:15",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 2346,
                                "name": "_BEACON_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2333,
                                "src": "5386:12:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 2344,
                                "name": "StorageSlot",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3659,
                                "src": "5359:11:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                  "typeString": "type(library StorageSlot)"
                                }
                              },
                              "id": 2345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAddressSlot",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3625,
                              "src": "5359:26:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3605_storage_ptr_$",
                                "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                              }
                            },
                            "id": 2347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5359:40:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                              "typeString": "struct StorageSlot.AddressSlot storage pointer"
                            }
                          },
                          "id": 2348,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3604,
                          "src": "5359:46:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2343,
                        "id": 2349,
                        "nodeType": "Return",
                        "src": "5352:53:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2339,
                    "nodeType": "StructuredDocumentation",
                    "src": "5232:51:15",
                    "text": " @dev Returns the current beacon."
                  },
                  "id": 2351,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getBeacon",
                  "nameLocation": "5297:10:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2340,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5307:2:15"
                  },
                  "returnParameters": {
                    "id": 2343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2342,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2351,
                        "src": "5333:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2341,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5333:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5332:9:15"
                  },
                  "scope": 2426,
                  "src": "5288:124:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2386,
                    "nodeType": "Block",
                    "src": "5541:324:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2360,
                                  "name": "newBeacon",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2354,
                                  "src": "5578:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 2358,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3466,
                                  "src": "5559:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 2359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3189,
                                "src": "5559:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5559:29:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374",
                              "id": 2362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5590:39:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470",
                                "typeString": "literal_string \"ERC1967: new beacon is not a contract\""
                              },
                              "value": "ERC1967: new beacon is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470",
                                "typeString": "literal_string \"ERC1967: new beacon is not a contract\""
                              }
                            ],
                            "id": 2357,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5551:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5551:79:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2364,
                        "nodeType": "ExpressionStatement",
                        "src": "5551:79:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 2369,
                                          "name": "newBeacon",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2354,
                                          "src": "5688:9:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2368,
                                        "name": "IBeacon",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2570,
                                        "src": "5680:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IBeacon_$2570_$",
                                          "typeString": "type(contract IBeacon)"
                                        }
                                      },
                                      "id": 2370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5680:18:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBeacon_$2570",
                                        "typeString": "contract IBeacon"
                                      }
                                    },
                                    "id": 2371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "implementation",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2569,
                                    "src": "5680:33:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 2372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5680:35:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 2366,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3466,
                                  "src": "5661:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 2367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3189,
                                "src": "5661:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5661:55:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 2374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5730:50:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8",
                                "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""
                              },
                              "value": "ERC1967: beacon implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8",
                                "typeString": "literal_string \"ERC1967: beacon implementation is not a contract\""
                              }
                            ],
                            "id": 2365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5640:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5640:150:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2376,
                        "nodeType": "ExpressionStatement",
                        "src": "5640:150:15"
                      },
                      {
                        "expression": {
                          "id": 2384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2380,
                                  "name": "_BEACON_SLOT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2333,
                                  "src": "5827:12:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 2377,
                                  "name": "StorageSlot",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3659,
                                  "src": "5800:11:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3659_$",
                                    "typeString": "type(library StorageSlot)"
                                  }
                                },
                                "id": 2379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAddressSlot",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3625,
                                "src": "5800:26:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3605_storage_ptr_$",
                                  "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
                                }
                              },
                              "id": 2381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5800:40:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                                "typeString": "struct StorageSlot.AddressSlot storage pointer"
                              }
                            },
                            "id": 2382,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3604,
                            "src": "5800:46:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2383,
                            "name": "newBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2354,
                            "src": "5849:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5800:58:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2385,
                        "nodeType": "ExpressionStatement",
                        "src": "5800:58:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2352,
                    "nodeType": "StructuredDocumentation",
                    "src": "5418:71:15",
                    "text": " @dev Stores a new beacon in the EIP1967 beacon slot."
                  },
                  "id": 2387,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBeacon",
                  "nameLocation": "5503:10:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2354,
                        "mutability": "mutable",
                        "name": "newBeacon",
                        "nameLocation": "5522:9:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2387,
                        "src": "5514:17:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2353,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5514:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5513:19:15"
                  },
                  "returnParameters": {
                    "id": 2356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5541:0:15"
                  },
                  "scope": 2426,
                  "src": "5494:371:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2424,
                    "nodeType": "Block",
                    "src": "6294:217:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2398,
                              "name": "newBeacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2390,
                              "src": "6315:9:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2397,
                            "name": "_setBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2387,
                            "src": "6304:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2399,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6304:21:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2400,
                        "nodeType": "ExpressionStatement",
                        "src": "6304:21:15"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2402,
                              "name": "newBeacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2390,
                              "src": "6355:9:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2401,
                            "name": "BeaconUpgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2338,
                            "src": "6340:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6340:25:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2404,
                        "nodeType": "EmitStatement",
                        "src": "6335:30:15"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2405,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2392,
                                "src": "6379:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "6379:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 2407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6393:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6379:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "id": 2409,
                            "name": "forceCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2394,
                            "src": "6398:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6379:28:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2423,
                        "nodeType": "IfStatement",
                        "src": "6375:130:15",
                        "trueBody": {
                          "id": 2422,
                          "nodeType": "Block",
                          "src": "6409:96:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 2415,
                                            "name": "newBeacon",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2390,
                                            "src": "6460:9:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 2414,
                                          "name": "IBeacon",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2570,
                                          "src": "6452:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IBeacon_$2570_$",
                                            "typeString": "type(contract IBeacon)"
                                          }
                                        },
                                        "id": 2416,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6452:18:15",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IBeacon_$2570",
                                          "typeString": "contract IBeacon"
                                        }
                                      },
                                      "id": 2417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "implementation",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2569,
                                      "src": "6452:33:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                        "typeString": "function () view external returns (address)"
                                      }
                                    },
                                    "id": 2418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6452:35:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2419,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2392,
                                    "src": "6489:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2411,
                                    "name": "Address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3466,
                                    "src": "6423:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                      "typeString": "type(library Address)"
                                    }
                                  },
                                  "id": 2413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "functionDelegateCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3399,
                                  "src": "6423:28:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (address,bytes memory) returns (bytes memory)"
                                  }
                                },
                                "id": 2420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6423:71:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 2421,
                              "nodeType": "ExpressionStatement",
                              "src": "6423:71:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2388,
                    "nodeType": "StructuredDocumentation",
                    "src": "5871:292:15",
                    "text": " @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."
                  },
                  "id": 2425,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeBeaconToAndCall",
                  "nameLocation": "6177:23:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2390,
                        "mutability": "mutable",
                        "name": "newBeacon",
                        "nameLocation": "6218:9:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2425,
                        "src": "6210:17:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6210:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2392,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6250:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2425,
                        "src": "6237:17:15",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2391,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6237:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2394,
                        "mutability": "mutable",
                        "name": "forceCall",
                        "nameLocation": "6269:9:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 2425,
                        "src": "6264:14:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2393,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6264:4:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6200:84:15"
                  },
                  "returnParameters": {
                    "id": 2396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6294:0:15"
                  },
                  "scope": 2426,
                  "src": "6168:343:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2427,
              "src": "529:5984:15",
              "usedErrors": []
            }
          ],
          "src": "116:6398:15"
        },
        "id": 15
      },
      "openzeppelin-contracts-V4/proxy/Proxy.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/proxy/Proxy.sol",
          "exportedSymbols": {
            "Proxy": [
              2478
            ]
          },
          "id": 2479,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2428,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:23:16"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Proxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2429,
                "nodeType": "StructuredDocumentation",
                "src": "124:598:16",
                "text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."
              },
              "fullyImplemented": false,
              "id": 2478,
              "linearizedBaseContracts": [
                2478
              ],
              "name": "Proxy",
              "nameLocation": "741:5:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2436,
                    "nodeType": "Block",
                    "src": "1008:835:16",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1027:810:16",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1280:1:16",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1283:1:16",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1286:12:16"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1286:14:16"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1267:12:16"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1267:34:16"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1267:34:16"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1428:74:16",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "1455:3:16"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1455:5:16"
                                  },
                                  {
                                    "name": "implementation",
                                    "nodeType": "YulIdentifier",
                                    "src": "1462:14:16"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1478:1:16",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1481:12:16"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1481:14:16"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1497:1:16",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1500:1:16",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "delegatecall",
                                  "nodeType": "YulIdentifier",
                                  "src": "1442:12:16"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1442:60:16"
                              },
                              "variables": [
                                {
                                  "name": "result",
                                  "nodeType": "YulTypedName",
                                  "src": "1432:6:16",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1570:1:16",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1573:1:16",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1576:14:16"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1576:16:16"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1555:14:16"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1555:38:16"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1555:38:16"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1688:59:16",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1713:1:16",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "1716:14:16"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1716:16:16"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1706:6:16"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1706:27:16"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1706:27:16"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1681:66:16",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1686:1:16",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1768:59:16",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1793:1:16",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "1796:14:16"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1796:16:16"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "return",
                                            "nodeType": "YulIdentifier",
                                            "src": "1786:6:16"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1786:27:16"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1786:27:16"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1760:67:16",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "name": "result",
                                "nodeType": "YulIdentifier",
                                "src": "1614:6:16"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1607:220:16"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2432,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1462:14:16",
                            "valueSize": 1
                          }
                        ],
                        "id": 2435,
                        "nodeType": "InlineAssembly",
                        "src": "1018:819:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2430,
                    "nodeType": "StructuredDocumentation",
                    "src": "753:190:16",
                    "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."
                  },
                  "id": 2437,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_delegate",
                  "nameLocation": "957:9:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2432,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "975:14:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2437,
                        "src": "967:22:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2431,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "967:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "966:24:16"
                  },
                  "returnParameters": {
                    "id": 2434,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1008:0:16"
                  },
                  "scope": 2478,
                  "src": "948:895:16",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "documentation": {
                    "id": 2438,
                    "nodeType": "StructuredDocumentation",
                    "src": "1849:172:16",
                    "text": " @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n and {_fallback} should delegate."
                  },
                  "id": 2443,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nameLocation": "2035:15:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2439,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2050:2:16"
                  },
                  "returnParameters": {
                    "id": 2442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2441,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2443,
                        "src": "2084:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2084:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2083:9:16"
                  },
                  "scope": 2478,
                  "src": "2026:67:16",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2455,
                    "nodeType": "Block",
                    "src": "2360:72:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2447,
                            "name": "_beforeFallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2477,
                            "src": "2370:15:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2370:17:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2449,
                        "nodeType": "ExpressionStatement",
                        "src": "2370:17:16"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2451,
                                "name": "_implementation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2443,
                                "src": "2407:15:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 2452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2407:17:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2450,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "2397:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2397:28:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2454,
                        "nodeType": "ExpressionStatement",
                        "src": "2397:28:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2444,
                    "nodeType": "StructuredDocumentation",
                    "src": "2099:218:16",
                    "text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internall call site, it will return directly to the external caller."
                  },
                  "id": 2456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_fallback",
                  "nameLocation": "2331:9:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2340:2:16"
                  },
                  "returnParameters": {
                    "id": 2446,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2360:0:16"
                  },
                  "scope": 2478,
                  "src": "2322:110:16",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2463,
                    "nodeType": "Block",
                    "src": "2665:28:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2460,
                            "name": "_fallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "2675:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2675:11:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2462,
                        "nodeType": "ExpressionStatement",
                        "src": "2675:11:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2457,
                    "nodeType": "StructuredDocumentation",
                    "src": "2438:186:16",
                    "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."
                  },
                  "id": 2464,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2458,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2637:2:16"
                  },
                  "returnParameters": {
                    "id": 2459,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2665:0:16"
                  },
                  "scope": 2478,
                  "src": "2629:64:16",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2471,
                    "nodeType": "Block",
                    "src": "2888:28:16",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2468,
                            "name": "_fallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "2898:9:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2898:11:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2470,
                        "nodeType": "ExpressionStatement",
                        "src": "2898:11:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2465,
                    "nodeType": "StructuredDocumentation",
                    "src": "2699:149:16",
                    "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."
                  },
                  "id": 2472,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2860:2:16"
                  },
                  "returnParameters": {
                    "id": 2467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2888:0:16"
                  },
                  "scope": 2478,
                  "src": "2853:63:16",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2476,
                    "nodeType": "Block",
                    "src": "3241:2:16",
                    "statements": []
                  },
                  "documentation": {
                    "id": 2473,
                    "nodeType": "StructuredDocumentation",
                    "src": "2922:270:16",
                    "text": " @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overriden should call `super._beforeFallback()`."
                  },
                  "id": 2477,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeFallback",
                  "nameLocation": "3206:15:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2474,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3221:2:16"
                  },
                  "returnParameters": {
                    "id": 2475,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3241:0:16"
                  },
                  "scope": 2478,
                  "src": "3197:46:16",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2479,
              "src": "723:2522:16",
              "usedErrors": []
            }
          ],
          "src": "99:3147:16"
        },
        "id": 16
      },
      "openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "BeaconProxy": [
              2560
            ],
            "ERC1967Upgrade": [
              2426
            ],
            "IBeacon": [
              2570
            ],
            "IERC1822Proxiable": [
              2108
            ],
            "Proxy": [
              2478
            ],
            "StorageSlot": [
              3659
            ]
          },
          "id": 2561,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2480,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "97:23:17"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol",
              "file": "./IBeacon.sol",
              "id": 2481,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2561,
              "sourceUnit": 2571,
              "src": "122:23:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/Proxy.sol",
              "file": "../Proxy.sol",
              "id": 2482,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2561,
              "sourceUnit": 2479,
              "src": "146:22:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/ERC1967/ERC1967Upgrade.sol",
              "file": "../ERC1967/ERC1967Upgrade.sol",
              "id": 2483,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2561,
              "sourceUnit": 2427,
              "src": "169:39:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2485,
                    "name": "Proxy",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2478,
                    "src": "588:5:17"
                  },
                  "id": 2486,
                  "nodeType": "InheritanceSpecifier",
                  "src": "588:5:17"
                },
                {
                  "baseName": {
                    "id": 2487,
                    "name": "ERC1967Upgrade",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2426,
                    "src": "595:14:17"
                  },
                  "id": 2488,
                  "nodeType": "InheritanceSpecifier",
                  "src": "595:14:17"
                }
              ],
              "canonicalName": "BeaconProxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2484,
                "nodeType": "StructuredDocumentation",
                "src": "210:353:17",
                "text": " @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.\n The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't\n conflict with the storage layout of the implementation behind the proxy.\n _Available since v3.4._"
              },
              "fullyImplemented": true,
              "id": 2560,
              "linearizedBaseContracts": [
                2560,
                2426,
                2478
              ],
              "name": "BeaconProxy",
              "nameLocation": "573:11:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2518,
                    "nodeType": "Block",
                    "src": "1101:150:17",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 2509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2497,
                                "name": "_BEACON_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2333,
                                "src": "1118:12:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "hexValue": "656970313936372e70726f78792e626561636f6e",
                                              "id": 2503,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1160:22:17",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51",
                                                "typeString": "literal_string \"eip1967.proxy.beacon\""
                                              },
                                              "value": "eip1967.proxy.beacon"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51",
                                                "typeString": "literal_string \"eip1967.proxy.beacon\""
                                              }
                                            ],
                                            "id": 2502,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "1150:9:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 2504,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1150:33:17",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 2501,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1142:7:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2500,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1142:7:17",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2505,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1142:42:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 2506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1187:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1142:46:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1134:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 2498,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1134:7:17",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1134:55:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1118:71:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2496,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "1111:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 2510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1111:79:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2511,
                        "nodeType": "ExpressionStatement",
                        "src": "1111:79:17"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2513,
                              "name": "beacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2491,
                              "src": "1224:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2514,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2493,
                              "src": "1232:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1238:5:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2512,
                            "name": "_upgradeBeaconToAndCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2425,
                            "src": "1200:23:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 2516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1200:44:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2517,
                        "nodeType": "ExpressionStatement",
                        "src": "1200:44:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2489,
                    "nodeType": "StructuredDocumentation",
                    "src": "616:425:17",
                    "text": " @dev Initializes the proxy with `beacon`.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This\n will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity\n constructor.\n Requirements:\n - `beacon` must be a contract with the interface {IBeacon}."
                  },
                  "id": 2519,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2491,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "1066:6:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2519,
                        "src": "1058:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1058:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2493,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1087:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2519,
                        "src": "1074:17:17",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2492,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1074:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1057:35:17"
                  },
                  "returnParameters": {
                    "id": 2495,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1101:0:17"
                  },
                  "scope": 2560,
                  "src": "1046:205:17",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2528,
                    "nodeType": "Block",
                    "src": "1380:36:17",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2525,
                            "name": "_getBeacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2351,
                            "src": "1397:10:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 2526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1397:12:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2524,
                        "id": 2527,
                        "nodeType": "Return",
                        "src": "1390:19:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2520,
                    "nodeType": "StructuredDocumentation",
                    "src": "1257:59:17",
                    "text": " @dev Returns the current beacon address."
                  },
                  "id": 2529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beacon",
                  "nameLocation": "1330:7:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2521,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1337:2:17"
                  },
                  "returnParameters": {
                    "id": 2524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2523,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2529,
                        "src": "1371:7:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1371:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1370:9:17"
                  },
                  "scope": 2560,
                  "src": "1321:95:17",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2443
                  ],
                  "body": {
                    "id": 2543,
                    "nodeType": "Block",
                    "src": "1595:62:17",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 2537,
                                    "name": "_getBeacon",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2351,
                                    "src": "1620:10:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 2538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1620:12:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2536,
                                "name": "IBeacon",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2570,
                                "src": "1612:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IBeacon_$2570_$",
                                  "typeString": "type(contract IBeacon)"
                                }
                              },
                              "id": 2539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1612:21:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBeacon_$2570",
                                "typeString": "contract IBeacon"
                              }
                            },
                            "id": 2540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "implementation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2569,
                            "src": "1612:36:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 2541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1612:38:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2535,
                        "id": 2542,
                        "nodeType": "Return",
                        "src": "1605:45:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2530,
                    "nodeType": "StructuredDocumentation",
                    "src": "1422:92:17",
                    "text": " @dev Returns the current implementation address of the associated beacon."
                  },
                  "id": 2544,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nameLocation": "1528:15:17",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2532,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1568:8:17"
                  },
                  "parameters": {
                    "id": 2531,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1543:2:17"
                  },
                  "returnParameters": {
                    "id": 2535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2534,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2544,
                        "src": "1586:7:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2533,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1586:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1585:9:17"
                  },
                  "scope": 2560,
                  "src": "1519:138:17",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2558,
                    "nodeType": "Block",
                    "src": "2107:61:17",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2553,
                              "name": "beacon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2547,
                              "src": "2141:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2554,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2549,
                              "src": "2149:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2155:5:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2552,
                            "name": "_upgradeBeaconToAndCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2425,
                            "src": "2117:23:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,bytes memory,bool)"
                            }
                          },
                          "id": 2556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2117:44:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2557,
                        "nodeType": "ExpressionStatement",
                        "src": "2117:44:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2545,
                    "nodeType": "StructuredDocumentation",
                    "src": "1663:367:17",
                    "text": " @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.\n If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.\n Requirements:\n - `beacon` must be a contract.\n - The implementation returned by `beacon` must be a contract."
                  },
                  "id": 2559,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBeacon",
                  "nameLocation": "2044:10:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2547,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "2063:6:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2559,
                        "src": "2055:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2055:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2549,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2084:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2559,
                        "src": "2071:17:17",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2548,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2071:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2054:35:17"
                  },
                  "returnParameters": {
                    "id": 2551,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2107:0:17"
                  },
                  "scope": 2560,
                  "src": "2035:133:17",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2561,
              "src": "564:1606:17",
              "usedErrors": []
            }
          ],
          "src": "97:2074:17"
        },
        "id": 17
      },
      "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol",
          "exportedSymbols": {
            "IBeacon": [
              2570
            ]
          },
          "id": 2571,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2562,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "93:23:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IBeacon",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2563,
                "nodeType": "StructuredDocumentation",
                "src": "118:79:18",
                "text": " @dev This is the interface that {BeaconProxy} expects of its beacon."
              },
              "fullyImplemented": false,
              "id": 2570,
              "linearizedBaseContracts": [
                2570
              ],
              "name": "IBeacon",
              "nameLocation": "208:7:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2564,
                    "nodeType": "StructuredDocumentation",
                    "src": "222:162:18",
                    "text": " @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 2569,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementation",
                  "nameLocation": "398:14:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2565,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "412:2:18"
                  },
                  "returnParameters": {
                    "id": 2568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2567,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2569,
                        "src": "438:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2566,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "438:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "437:9:18"
                  },
                  "scope": 2570,
                  "src": "389:58:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2571,
              "src": "198:251:18",
              "usedErrors": []
            }
          ],
          "src": "93:357:18"
        },
        "id": 18
      },
      "openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/UpgradeableBeacon.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "Context": [
              3488
            ],
            "IBeacon": [
              2570
            ],
            "Ownable": [
              2098
            ],
            "UpgradeableBeacon": [
              2645
            ]
          },
          "id": 2646,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2572,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "103:23:19"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/IBeacon.sol",
              "file": "./IBeacon.sol",
              "id": 2573,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2646,
              "sourceUnit": 2571,
              "src": "128:23:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/access/Ownable.sol",
              "file": "../../access/Ownable.sol",
              "id": 2574,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2646,
              "sourceUnit": 2099,
              "src": "152:34:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 2575,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2646,
              "sourceUnit": 3467,
              "src": "187:33:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2577,
                    "name": "IBeacon",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2570,
                    "src": "573:7:19"
                  },
                  "id": 2578,
                  "nodeType": "InheritanceSpecifier",
                  "src": "573:7:19"
                },
                {
                  "baseName": {
                    "id": 2579,
                    "name": "Ownable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2098,
                    "src": "582:7:19"
                  },
                  "id": 2580,
                  "nodeType": "InheritanceSpecifier",
                  "src": "582:7:19"
                }
              ],
              "canonicalName": "UpgradeableBeacon",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2576,
                "nodeType": "StructuredDocumentation",
                "src": "222:320:19",
                "text": " @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their\n implementation contract, which is where they will delegate all function calls.\n An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon."
              },
              "fullyImplemented": true,
              "id": 2645,
              "linearizedBaseContracts": [
                2645,
                2098,
                3488,
                2570
              ],
              "name": "UpgradeableBeacon",
              "nameLocation": "552:17:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 2582,
                  "mutability": "mutable",
                  "name": "_implementation",
                  "nameLocation": "612:15:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 2645,
                  "src": "596:31:19",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "596:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2583,
                    "nodeType": "StructuredDocumentation",
                    "src": "634:90:19",
                    "text": " @dev Emitted when the implementation returned by the beacon is changed."
                  },
                  "id": 2587,
                  "name": "Upgraded",
                  "nameLocation": "735:8:19",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2585,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nameLocation": "760:14:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2587,
                        "src": "744:30:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2584,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "744:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "743:32:19"
                  },
                  "src": "729:47:19"
                },
                {
                  "body": {
                    "id": 2597,
                    "nodeType": "Block",
                    "src": "968:52:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2594,
                              "name": "implementation_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2590,
                              "src": "997:15:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2593,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2644,
                            "src": "978:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "978:35:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2596,
                        "nodeType": "ExpressionStatement",
                        "src": "978:35:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2588,
                    "nodeType": "StructuredDocumentation",
                    "src": "782:144:19",
                    "text": " @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the\n beacon."
                  },
                  "id": 2598,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2590,
                        "mutability": "mutable",
                        "name": "implementation_",
                        "nameLocation": "951:15:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2598,
                        "src": "943:23:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2589,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "943:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "942:25:19"
                  },
                  "returnParameters": {
                    "id": 2592,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "968:0:19"
                  },
                  "scope": 2645,
                  "src": "931:89:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2569
                  ],
                  "body": {
                    "id": 2607,
                    "nodeType": "Block",
                    "src": "1171:39:19",
                    "statements": [
                      {
                        "expression": {
                          "id": 2605,
                          "name": "_implementation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2582,
                          "src": "1188:15:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2604,
                        "id": 2606,
                        "nodeType": "Return",
                        "src": "1181:22:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2599,
                    "nodeType": "StructuredDocumentation",
                    "src": "1026:67:19",
                    "text": " @dev Returns the current implementation address."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 2608,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "implementation",
                  "nameLocation": "1107:14:19",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2601,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1144:8:19"
                  },
                  "parameters": {
                    "id": 2600,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1121:2:19"
                  },
                  "returnParameters": {
                    "id": 2604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2603,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2608,
                        "src": "1162:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2602,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1162:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1161:9:19"
                  },
                  "scope": 2645,
                  "src": "1098:112:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2624,
                    "nodeType": "Block",
                    "src": "1540:96:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2617,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "1569:17:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2616,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2644,
                            "src": "1550:18:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1550:37:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2619,
                        "nodeType": "ExpressionStatement",
                        "src": "1550:37:19"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2621,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "1611:17:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2620,
                            "name": "Upgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2587,
                            "src": "1602:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1602:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2623,
                        "nodeType": "EmitStatement",
                        "src": "1597:32:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2609,
                    "nodeType": "StructuredDocumentation",
                    "src": "1216:248:19",
                    "text": " @dev Upgrades the beacon to a new implementation.\n Emits an {Upgraded} event.\n Requirements:\n - msg.sender must be the owner of the contract.\n - `newImplementation` must be a contract."
                  },
                  "functionSelector": "3659cfe6",
                  "id": 2625,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2614,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2613,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2040,
                        "src": "1530:9:19"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1530:9:19"
                    }
                  ],
                  "name": "upgradeTo",
                  "nameLocation": "1478:9:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2611,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1496:17:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2625,
                        "src": "1488:25:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1488:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1487:27:19"
                  },
                  "returnParameters": {
                    "id": 2615,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1540:0:19"
                  },
                  "scope": 2645,
                  "src": "1469:167:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2643,
                    "nodeType": "Block",
                    "src": "1874:163:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2634,
                                  "name": "newImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2628,
                                  "src": "1911:17:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 2632,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3466,
                                  "src": "1892:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 2633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3189,
                                "src": "1892:18:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 2635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1892:37:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374",
                              "id": 2636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1931:53:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6",
                                "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\""
                              },
                              "value": "UpgradeableBeacon: implementation is not a contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5ccca6b0666a32006e874c0f8fc30910124098b6e8e91ea2ea1baa45ce41f1e6",
                                "typeString": "literal_string \"UpgradeableBeacon: implementation is not a contract\""
                              }
                            ],
                            "id": 2631,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1884:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1884:101:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2638,
                        "nodeType": "ExpressionStatement",
                        "src": "1884:101:19"
                      },
                      {
                        "expression": {
                          "id": 2641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2639,
                            "name": "_implementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2582,
                            "src": "1995:15:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2640,
                            "name": "newImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2628,
                            "src": "2013:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1995:35:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2642,
                        "nodeType": "ExpressionStatement",
                        "src": "1995:35:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2626,
                    "nodeType": "StructuredDocumentation",
                    "src": "1642:164:19",
                    "text": " @dev Sets the implementation contract address for this beacon\n Requirements:\n - `newImplementation` must be a contract."
                  },
                  "id": 2644,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nameLocation": "1820:18:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2628,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nameLocation": "1847:17:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2644,
                        "src": "1839:25:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2627,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1839:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1838:27:19"
                  },
                  "returnParameters": {
                    "id": 2630,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1874:0:19"
                  },
                  "scope": 2645,
                  "src": "1811:226:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 2646,
              "src": "543:1496:19",
              "usedErrors": []
            }
          ],
          "src": "103:1937:19"
        },
        "id": 19
      },
      "openzeppelin-contracts-V4/security/ReentrancyGuard.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/security/ReentrancyGuard.sol",
          "exportedSymbols": {
            "ReentrancyGuard": [
              2685
            ]
          },
          "id": 2686,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2647,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "97:23:20"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "ReentrancyGuard",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2648,
                "nodeType": "StructuredDocumentation",
                "src": "122:750:20",
                "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."
              },
              "fullyImplemented": true,
              "id": 2685,
              "linearizedBaseContracts": [
                2685
              ],
              "name": "ReentrancyGuard",
              "nameLocation": "891:15:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 2651,
                  "mutability": "constant",
                  "name": "_NOT_ENTERED",
                  "nameLocation": "1686:12:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 2685,
                  "src": "1661:41:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1661:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 2650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1701:1:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 2654,
                  "mutability": "constant",
                  "name": "_ENTERED",
                  "nameLocation": "1733:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 2685,
                  "src": "1708:37:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1708:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 2653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1744:1:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2656,
                  "mutability": "mutable",
                  "name": "_status",
                  "nameLocation": "1768:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 2685,
                  "src": "1752:23:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1752:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2663,
                    "nodeType": "Block",
                    "src": "1796:39:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 2661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2659,
                            "name": "_status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2656,
                            "src": "1806:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2660,
                            "name": "_NOT_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "1816:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1806:22:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2662,
                        "nodeType": "ExpressionStatement",
                        "src": "1806:22:20"
                      }
                    ]
                  },
                  "id": 2664,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2657,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1793:2:20"
                  },
                  "returnParameters": {
                    "id": 2658,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1796:0:20"
                  },
                  "scope": 2685,
                  "src": "1782:53:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2683,
                    "nodeType": "Block",
                    "src": "2236:421:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2668,
                                "name": "_status",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2656,
                                "src": "2325:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 2669,
                                "name": "_ENTERED",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2654,
                                "src": "2336:8:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2325:19:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                              "id": 2671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2346:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                              },
                              "value": "ReentrancyGuard: reentrant call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                              }
                            ],
                            "id": 2667,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2317:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2317:63:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2673,
                        "nodeType": "ExpressionStatement",
                        "src": "2317:63:20"
                      },
                      {
                        "expression": {
                          "id": 2676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2674,
                            "name": "_status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2656,
                            "src": "2455:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2675,
                            "name": "_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2654,
                            "src": "2465:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2455:18:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2677,
                        "nodeType": "ExpressionStatement",
                        "src": "2455:18:20"
                      },
                      {
                        "id": 2678,
                        "nodeType": "PlaceholderStatement",
                        "src": "2484:1:20"
                      },
                      {
                        "expression": {
                          "id": 2681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2679,
                            "name": "_status",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2656,
                            "src": "2628:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2680,
                            "name": "_NOT_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2651,
                            "src": "2638:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2628:22:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2682,
                        "nodeType": "ExpressionStatement",
                        "src": "2628:22:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2665,
                    "nodeType": "StructuredDocumentation",
                    "src": "1841:366:20",
                    "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."
                  },
                  "id": 2684,
                  "name": "nonReentrant",
                  "nameLocation": "2221:12:20",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 2666,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2233:2:20"
                  },
                  "src": "2212:445:20",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2686,
              "src": "873:1786:20",
              "usedErrors": []
            }
          ],
          "src": "97:2563:20"
        },
        "id": 20
      },
      "openzeppelin-contracts-V4/token/ERC20/IERC20.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              2763
            ]
          },
          "id": 2764,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2687,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:23:21"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2688,
                "nodeType": "StructuredDocumentation",
                "src": "131:70:21",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 2763,
              "linearizedBaseContracts": [
                2763
              ],
              "name": "IERC20",
              "nameLocation": "212:6:21",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2689,
                    "nodeType": "StructuredDocumentation",
                    "src": "225:66:21",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 2694,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "305:11:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "316:2:21"
                  },
                  "returnParameters": {
                    "id": 2693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2692,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2694,
                        "src": "342:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "341:9:21"
                  },
                  "scope": 2763,
                  "src": "296:55:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2695,
                    "nodeType": "StructuredDocumentation",
                    "src": "357:72:21",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 2702,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "443:9:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2697,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "461:7:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2702,
                        "src": "453:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2696,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "453:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "452:17:21"
                  },
                  "returnParameters": {
                    "id": 2701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2700,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2702,
                        "src": "493:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2699,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "493:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "492:9:21"
                  },
                  "scope": 2763,
                  "src": "434:68:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2703,
                    "nodeType": "StructuredDocumentation",
                    "src": "508:202:21",
                    "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 2712,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "724:8:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2708,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2705,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "741:2:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2712,
                        "src": "733:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2704,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "733:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2707,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "753:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2712,
                        "src": "745:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2706,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "745:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "732:28:21"
                  },
                  "returnParameters": {
                    "id": 2711,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2710,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2712,
                        "src": "779:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2709,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "779:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "778:6:21"
                  },
                  "scope": 2763,
                  "src": "715:70:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2713,
                    "nodeType": "StructuredDocumentation",
                    "src": "791:264:21",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 2722,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "1069:9:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2715,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1087:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2722,
                        "src": "1079:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2714,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1079:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2717,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1102:7:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2722,
                        "src": "1094:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2716,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1094:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1078:32:21"
                  },
                  "returnParameters": {
                    "id": 2721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2720,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2722,
                        "src": "1134:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2719,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1134:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1133:9:21"
                  },
                  "scope": 2763,
                  "src": "1060:83:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2723,
                    "nodeType": "StructuredDocumentation",
                    "src": "1149:642:21",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 2732,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "1805:7:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2728,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2725,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1821:7:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2732,
                        "src": "1813:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1813:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2727,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1838:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2732,
                        "src": "1830:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1830:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1812:33:21"
                  },
                  "returnParameters": {
                    "id": 2731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2730,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2732,
                        "src": "1864:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2729,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1864:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1863:6:21"
                  },
                  "scope": 2763,
                  "src": "1796:74:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2733,
                    "nodeType": "StructuredDocumentation",
                    "src": "1876:287:21",
                    "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 2744,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2177:12:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2735,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2207:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2744,
                        "src": "2199:12:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2734,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2737,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2229:2:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2744,
                        "src": "2221:10:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2736,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2221:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2739,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2249:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2744,
                        "src": "2241:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2241:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2189:72:21"
                  },
                  "returnParameters": {
                    "id": 2743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2742,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2744,
                        "src": "2280:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2741,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2280:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2279:6:21"
                  },
                  "scope": 2763,
                  "src": "2168:118:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2745,
                    "nodeType": "StructuredDocumentation",
                    "src": "2292:158:21",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "id": 2753,
                  "name": "Transfer",
                  "nameLocation": "2461:8:21",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2747,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2486:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2753,
                        "src": "2470:20:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2746,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2470:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2749,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2508:2:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2753,
                        "src": "2492:18:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2492:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2751,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2520:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2753,
                        "src": "2512:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2750,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2512:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2469:57:21"
                  },
                  "src": "2455:72:21"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2754,
                    "nodeType": "StructuredDocumentation",
                    "src": "2533:148:21",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "id": 2762,
                  "name": "Approval",
                  "nameLocation": "2692:8:21",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2756,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2717:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2762,
                        "src": "2701:21:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2755,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2701:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2758,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2740:7:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2762,
                        "src": "2724:23:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2757,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2724:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2760,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2757:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2762,
                        "src": "2749:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2749:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2700:63:21"
                  },
                  "src": "2686:78:21"
                }
              ],
              "scope": 2764,
              "src": "202:2564:21",
              "usedErrors": []
            }
          ],
          "src": "106:2661:21"
        },
        "id": 21
      },
      "openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol",
          "exportedSymbols": {
            "IERC20": [
              2763
            ],
            "IERC20Metadata": [
              2788
            ]
          },
          "id": 2789,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2765,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "110:23:22"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
              "file": "../IERC20.sol",
              "id": 2766,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2789,
              "sourceUnit": 2764,
              "src": "135:23:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2768,
                    "name": "IERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2763,
                    "src": "305:6:22"
                  },
                  "id": 2769,
                  "nodeType": "InheritanceSpecifier",
                  "src": "305:6:22"
                }
              ],
              "canonicalName": "IERC20Metadata",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2767,
                "nodeType": "StructuredDocumentation",
                "src": "160:116:22",
                "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"
              },
              "fullyImplemented": false,
              "id": 2788,
              "linearizedBaseContracts": [
                2788,
                2763
              ],
              "name": "IERC20Metadata",
              "nameLocation": "287:14:22",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2770,
                    "nodeType": "StructuredDocumentation",
                    "src": "318:54:22",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 2775,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "386:4:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2771,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "390:2:22"
                  },
                  "returnParameters": {
                    "id": 2774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2773,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2775,
                        "src": "416:13:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2772,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "416:6:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "415:15:22"
                  },
                  "scope": 2788,
                  "src": "377:54:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2776,
                    "nodeType": "StructuredDocumentation",
                    "src": "437:56:22",
                    "text": " @dev Returns the symbol of the token."
                  },
                  "functionSelector": "95d89b41",
                  "id": 2781,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "507:6:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "513:2:22"
                  },
                  "returnParameters": {
                    "id": 2780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2779,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2781,
                        "src": "539:13:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2778,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "539:6:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "538:15:22"
                  },
                  "scope": 2788,
                  "src": "498:56:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2782,
                    "nodeType": "StructuredDocumentation",
                    "src": "560:65:22",
                    "text": " @dev Returns the decimals places of the token."
                  },
                  "functionSelector": "313ce567",
                  "id": 2787,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "639:8:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2783,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "647:2:22"
                  },
                  "returnParameters": {
                    "id": 2786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2785,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2787,
                        "src": "673:5:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2784,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "673:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "672:7:22"
                  },
                  "scope": 2788,
                  "src": "630:50:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2789,
              "src": "277:405:22",
              "usedErrors": []
            }
          ],
          "src": "110:573:22"
        },
        "id": 22
      },
      "openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "IERC20": [
              2763
            ],
            "SafeERC20": [
              3012
            ]
          },
          "id": 3013,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2790,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:23:23"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
              "file": "../IERC20.sol",
              "id": 2791,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3013,
              "sourceUnit": 2764,
              "src": "125:23:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/Address.sol",
              "file": "../../../utils/Address.sol",
              "id": 2792,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3013,
              "sourceUnit": 3467,
              "src": "149:36:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SafeERC20",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2793,
                "nodeType": "StructuredDocumentation",
                "src": "187:457:23",
                "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."
              },
              "fullyImplemented": true,
              "id": 3012,
              "linearizedBaseContracts": [
                3012
              ],
              "name": "SafeERC20",
              "nameLocation": "653:9:23",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 2796,
                  "libraryName": {
                    "id": 2794,
                    "name": "Address",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3466,
                    "src": "675:7:23"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "669:26:23",
                  "typeName": {
                    "id": 2795,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "687:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 2818,
                    "nodeType": "Block",
                    "src": "803:103:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2807,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2799,
                              "src": "833:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 2810,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2799,
                                      "src": "863:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2763",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2712,
                                    "src": "863:14:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "863:23:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 2813,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2801,
                                  "src": "888:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2814,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2803,
                                  "src": "892:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2808,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "840:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "840:22:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 2815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "840:58:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2806,
                            "name": "_callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3011,
                            "src": "813:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 2816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "813:86:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2817,
                        "nodeType": "ExpressionStatement",
                        "src": "813:86:23"
                      }
                    ]
                  },
                  "id": 2819,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nameLocation": "710:12:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2799,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "739:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2819,
                        "src": "732:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 2798,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2797,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "732:6:23"
                          },
                          "referencedDeclaration": 2763,
                          "src": "732:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2801,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "762:2:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2819,
                        "src": "754:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "754:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2803,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "782:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2819,
                        "src": "774:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2802,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "774:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "722:71:23"
                  },
                  "returnParameters": {
                    "id": 2805,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "803:0:23"
                  },
                  "scope": 3012,
                  "src": "701:205:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2844,
                    "nodeType": "Block",
                    "src": "1040:113:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2832,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2822,
                              "src": "1070:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 2835,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2822,
                                      "src": "1100:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2763",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2744,
                                    "src": "1100:18:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "1100:27:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 2838,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2824,
                                  "src": "1129:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2839,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2826,
                                  "src": "1135:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2840,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2828,
                                  "src": "1139:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2833,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1077:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "1077:22:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 2841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1077:68:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2831,
                            "name": "_callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3011,
                            "src": "1050:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 2842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1050:96:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2843,
                        "nodeType": "ExpressionStatement",
                        "src": "1050:96:23"
                      }
                    ]
                  },
                  "id": 2845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "921:16:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2822,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "954:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2845,
                        "src": "947:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 2821,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2820,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "947:6:23"
                          },
                          "referencedDeclaration": 2763,
                          "src": "947:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2824,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "977:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2845,
                        "src": "969:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2823,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "969:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2826,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "999:2:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2845,
                        "src": "991:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2825,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "991:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2828,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1019:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2845,
                        "src": "1011:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1011:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "937:93:23"
                  },
                  "returnParameters": {
                    "id": 2830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1040:0:23"
                  },
                  "scope": 3012,
                  "src": "912:241:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2888,
                    "nodeType": "Block",
                    "src": "1519:497:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2859,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2857,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2853,
                                      "src": "1768:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 2858,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1777:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1768:10:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 2860,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1767:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 2865,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "1808:4:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_SafeERC20_$3012",
                                                "typeString": "library SafeERC20"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_SafeERC20_$3012",
                                                "typeString": "library SafeERC20"
                                              }
                                            ],
                                            "id": 2864,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1800:7:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 2863,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1800:7:23",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 2866,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1800:13:23",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2867,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2851,
                                          "src": "1815:7:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 2861,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2849,
                                          "src": "1784:5:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2763",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 2862,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "allowance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2722,
                                        "src": "1784:15:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address,address) view external returns (uint256)"
                                        }
                                      },
                                      "id": 2868,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1784:39:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 2869,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1827:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1784:44:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 2871,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1783:46:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1767:62:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                              "id": 2873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1843:56:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                              },
                              "value": "SafeERC20: approve from non-zero to non-zero allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                              }
                            ],
                            "id": 2856,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1746:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1746:163:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2875,
                        "nodeType": "ExpressionStatement",
                        "src": "1746:163:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2877,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2849,
                              "src": "1939:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 2880,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2849,
                                      "src": "1969:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2763",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2881,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2732,
                                    "src": "1969:13:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "1969:22:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 2883,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2851,
                                  "src": "1993:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2884,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2853,
                                  "src": "2002:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2878,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1946:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "1946:22:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 2885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1946:62:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2876,
                            "name": "_callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3011,
                            "src": "1919:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 2886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1919:90:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2887,
                        "nodeType": "ExpressionStatement",
                        "src": "1919:90:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2846,
                    "nodeType": "StructuredDocumentation",
                    "src": "1159:249:23",
                    "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."
                  },
                  "id": 2889,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeApprove",
                  "nameLocation": "1422:11:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2849,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "1450:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2889,
                        "src": "1443:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 2848,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2847,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "1443:6:23"
                          },
                          "referencedDeclaration": 2763,
                          "src": "1443:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2851,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1473:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2889,
                        "src": "1465:15:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2850,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1465:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2853,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1498:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2889,
                        "src": "1490:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1490:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1433:76:23"
                  },
                  "returnParameters": {
                    "id": 2855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1519:0:23"
                  },
                  "scope": 3012,
                  "src": "1413:603:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2924,
                    "nodeType": "Block",
                    "src": "2138:194:23",
                    "statements": [
                      {
                        "assignments": [
                          2900
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2900,
                            "mutability": "mutable",
                            "name": "newAllowance",
                            "nameLocation": "2156:12:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 2924,
                            "src": "2148:20:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2899,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2148:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2911,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 2905,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2195:4:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_SafeERC20_$3012",
                                      "typeString": "library SafeERC20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SafeERC20_$3012",
                                      "typeString": "library SafeERC20"
                                    }
                                  ],
                                  "id": 2904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2187:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2903,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2187:7:23",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2187:13:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2907,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2894,
                                "src": "2202:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 2901,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2892,
                                "src": "2171:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "allowance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2722,
                              "src": "2171:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 2908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2171:39:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 2909,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2896,
                            "src": "2213:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2171:47:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2148:70:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2913,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2892,
                              "src": "2248:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 2916,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2892,
                                      "src": "2278:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2763",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2917,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2732,
                                    "src": "2278:13:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2918,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "2278:22:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 2919,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2894,
                                  "src": "2302:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2920,
                                  "name": "newAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2900,
                                  "src": "2311:12:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 2914,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2255:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "2255:22:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 2921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2255:69:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2912,
                            "name": "_callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3011,
                            "src": "2228:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 2922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2228:97:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2923,
                        "nodeType": "ExpressionStatement",
                        "src": "2228:97:23"
                      }
                    ]
                  },
                  "id": 2925,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeIncreaseAllowance",
                  "nameLocation": "2031:21:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2892,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "2069:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2925,
                        "src": "2062:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 2891,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2890,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "2062:6:23"
                          },
                          "referencedDeclaration": 2763,
                          "src": "2062:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2894,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2092:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2925,
                        "src": "2084:15:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2893,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2084:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2896,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2117:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2925,
                        "src": "2109:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2895,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2109:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2052:76:23"
                  },
                  "returnParameters": {
                    "id": 2898,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2138:0:23"
                  },
                  "scope": 3012,
                  "src": "2022:310:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2972,
                    "nodeType": "Block",
                    "src": "2454:370:23",
                    "statements": [
                      {
                        "id": 2971,
                        "nodeType": "UncheckedBlock",
                        "src": "2464:354:23",
                        "statements": [
                          {
                            "assignments": [
                              2936
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2936,
                                "mutability": "mutable",
                                "name": "oldAllowance",
                                "nameLocation": "2496:12:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 2971,
                                "src": "2488:20:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2935,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2488:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 2945,
                            "initialValue": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2941,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2535:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_SafeERC20_$3012",
                                        "typeString": "library SafeERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_SafeERC20_$3012",
                                        "typeString": "library SafeERC20"
                                      }
                                    ],
                                    "id": 2940,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2527:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2939,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2527:7:23",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2527:13:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2943,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2930,
                                  "src": "2542:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 2937,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2928,
                                  "src": "2511:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 2938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "allowance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2722,
                                "src": "2511:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address,address) view external returns (uint256)"
                                }
                              },
                              "id": 2944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2511:39:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2488:62:23"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2947,
                                    "name": "oldAllowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2936,
                                    "src": "2572:12:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "id": 2948,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2932,
                                    "src": "2588:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2572:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                  "id": 2950,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2595:43:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                    "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                                  },
                                  "value": "SafeERC20: decreased allowance below zero"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                    "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                                  }
                                ],
                                "id": 2946,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "2564:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 2951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2564:75:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2952,
                            "nodeType": "ExpressionStatement",
                            "src": "2564:75:23"
                          },
                          {
                            "assignments": [
                              2954
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2954,
                                "mutability": "mutable",
                                "name": "newAllowance",
                                "nameLocation": "2661:12:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 2971,
                                "src": "2653:20:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2953,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2653:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 2958,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2955,
                                "name": "oldAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2936,
                                "src": "2676:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 2956,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2932,
                                "src": "2691:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2676:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2653:43:23"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2960,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2928,
                                  "src": "2730:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "expression": {
                                          "id": 2963,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2928,
                                          "src": "2760:5:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2763",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 2964,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "approve",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2732,
                                        "src": "2760:13:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                          "typeString": "function (address,uint256) external returns (bool)"
                                        }
                                      },
                                      "id": 2965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "2760:22:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    {
                                      "id": 2966,
                                      "name": "spender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2930,
                                      "src": "2784:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 2967,
                                      "name": "newAllowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2954,
                                      "src": "2793:12:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2961,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2737:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 2962,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodeWithSelector",
                                    "nodeType": "MemberAccess",
                                    "src": "2737:22:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes4) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 2968,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2737:69:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2959,
                                "name": "_callOptionalReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3011,
                                "src": "2710:19:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (contract IERC20,bytes memory)"
                                }
                              },
                              "id": 2969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2710:97:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2970,
                            "nodeType": "ExpressionStatement",
                            "src": "2710:97:23"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 2973,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDecreaseAllowance",
                  "nameLocation": "2347:21:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2928,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "2385:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2973,
                        "src": "2378:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 2927,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2926,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "2378:6:23"
                          },
                          "referencedDeclaration": 2763,
                          "src": "2378:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2930,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2408:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2973,
                        "src": "2400:15:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2929,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2400:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2932,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2433:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2973,
                        "src": "2425:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2425:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2368:76:23"
                  },
                  "returnParameters": {
                    "id": 2934,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2454:0:23"
                  },
                  "scope": 3012,
                  "src": "2338:486:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3010,
                    "nodeType": "Block",
                    "src": "3277:636:23",
                    "statements": [
                      {
                        "assignments": [
                          2983
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2983,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "3639:10:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 3010,
                            "src": "3626:23:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2982,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3626:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2992,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2989,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2979,
                              "src": "3680:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 2990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3686:34:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                              },
                              "value": "SafeERC20: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2986,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2977,
                                  "src": "3660:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 2985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3652:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2984,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3652:7:23",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3652:14:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 2988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "functionCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3260,
                            "src": "3652:27:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 2991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3652:69:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3626:95:23"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2993,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2983,
                              "src": "3735:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3735:17:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3755:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3735:21:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3009,
                        "nodeType": "IfStatement",
                        "src": "3731:176:23",
                        "trueBody": {
                          "id": 3008,
                          "nodeType": "Block",
                          "src": "3758:149:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3000,
                                        "name": "returndata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2983,
                                        "src": "3830:10:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 3002,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3843:4:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 3001,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3843:4:23",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "id": 3003,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "3842:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "id": 2998,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3819:3:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 2999,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "3819:10:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 3004,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3819:30:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
                                    "id": 3005,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3851:44:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                      "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                    },
                                    "value": "SafeERC20: ERC20 operation did not succeed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                      "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                    }
                                  ],
                                  "id": 2997,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "3811:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3811:85:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3007,
                              "nodeType": "ExpressionStatement",
                              "src": "3811:85:23"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2974,
                    "nodeType": "StructuredDocumentation",
                    "src": "2830:372:23",
                    "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."
                  },
                  "id": 3011,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callOptionalReturn",
                  "nameLocation": "3216:19:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2977,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "3243:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3011,
                        "src": "3236:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 2976,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2975,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "3236:6:23"
                          },
                          "referencedDeclaration": 2763,
                          "src": "3236:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2979,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3263:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3011,
                        "src": "3250:17:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2978,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3250:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3235:33:23"
                  },
                  "returnParameters": {
                    "id": 2981,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3277:0:23"
                  },
                  "scope": 3012,
                  "src": "3207:706:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 3013,
              "src": "645:3270:23",
              "usedErrors": []
            }
          ],
          "src": "100:3816:23"
        },
        "id": 23
      },
      "openzeppelin-contracts-V4/token/ERC777/IERC777.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/token/ERC777/IERC777.sol",
          "exportedSymbols": {
            "IERC777": [
              3171
            ]
          },
          "id": 3172,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3014,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "93:23:24"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC777",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3015,
                "nodeType": "StructuredDocumentation",
                "src": "118:372:24",
                "text": " @dev Interface of the ERC777Token standard as defined in the EIP.\n This contract uses the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n token holders and recipients react to token movements by using setting implementers\n for the associated interfaces in said registry. See {IERC1820Registry} and\n {ERC1820Implementer}."
              },
              "fullyImplemented": false,
              "id": 3171,
              "linearizedBaseContracts": [
                3171
              ],
              "name": "IERC777",
              "nameLocation": "501:7:24",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3016,
                    "nodeType": "StructuredDocumentation",
                    "src": "515:54:24",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 3021,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "583:4:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3017,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "587:2:24"
                  },
                  "returnParameters": {
                    "id": 3020,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3019,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3021,
                        "src": "613:13:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3018,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "613:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "612:15:24"
                  },
                  "scope": 3171,
                  "src": "574:54:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3022,
                    "nodeType": "StructuredDocumentation",
                    "src": "634:102:24",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 3027,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "750:6:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "756:2:24"
                  },
                  "returnParameters": {
                    "id": 3026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3025,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3027,
                        "src": "782:13:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3024,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "782:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "781:15:24"
                  },
                  "scope": 3171,
                  "src": "741:56:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3028,
                    "nodeType": "StructuredDocumentation",
                    "src": "803:287:24",
                    "text": " @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n For most token contracts, this value will equal 1."
                  },
                  "functionSelector": "556f0dc7",
                  "id": 3033,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "granularity",
                  "nameLocation": "1104:11:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1115:2:24"
                  },
                  "returnParameters": {
                    "id": 3032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3031,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3033,
                        "src": "1141:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1141:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1140:9:24"
                  },
                  "scope": 3171,
                  "src": "1095:55:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3034,
                    "nodeType": "StructuredDocumentation",
                    "src": "1156:66:24",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 3039,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "1236:11:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3035,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1247:2:24"
                  },
                  "returnParameters": {
                    "id": 3038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3037,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3039,
                        "src": "1273:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1273:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1272:9:24"
                  },
                  "scope": 3171,
                  "src": "1227:55:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3040,
                    "nodeType": "StructuredDocumentation",
                    "src": "1288:83:24",
                    "text": " @dev Returns the amount of tokens owned by an account (`owner`)."
                  },
                  "functionSelector": "70a08231",
                  "id": 3047,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "1385:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3043,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3042,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1403:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3047,
                        "src": "1395:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3041,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1395:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1394:15:24"
                  },
                  "returnParameters": {
                    "id": 3046,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3045,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3047,
                        "src": "1433:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3044,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1433:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1432:9:24"
                  },
                  "scope": 3171,
                  "src": "1376:66:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3048,
                    "nodeType": "StructuredDocumentation",
                    "src": "1448:585:24",
                    "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
                  },
                  "functionSelector": "9bd9bbc6",
                  "id": 3057,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "send",
                  "nameLocation": "2047:4:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3050,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2069:9:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "2061:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3049,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2061:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3052,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2096:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "2088:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3051,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2088:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3054,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2127:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "2112:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3053,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2112:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2051:86:24"
                  },
                  "returnParameters": {
                    "id": 3056,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2146:0:24"
                  },
                  "scope": 3171,
                  "src": "2038:109:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3058,
                    "nodeType": "StructuredDocumentation",
                    "src": "2153:404:24",
                    "text": " @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - the caller must have at least `amount` tokens."
                  },
                  "functionSelector": "fe9d9303",
                  "id": 3065,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "2571:4:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3060,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2584:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3065,
                        "src": "2576:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3059,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3062,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2607:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3065,
                        "src": "2592:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3061,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2592:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2575:37:24"
                  },
                  "returnParameters": {
                    "id": 3064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2621:0:24"
                  },
                  "scope": 3171,
                  "src": "2562:60:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3066,
                    "nodeType": "StructuredDocumentation",
                    "src": "2628:249:24",
                    "text": " @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."
                  },
                  "functionSelector": "d95b6371",
                  "id": 3075,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isOperatorFor",
                  "nameLocation": "2891:13:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3068,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2913:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3075,
                        "src": "2905:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3067,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2905:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3070,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "2931:11:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3075,
                        "src": "2923:19:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2923:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2904:39:24"
                  },
                  "returnParameters": {
                    "id": 3074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3073,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3075,
                        "src": "2967:4:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3072,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2967:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2966:6:24"
                  },
                  "scope": 3171,
                  "src": "2882:91:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3076,
                    "nodeType": "StructuredDocumentation",
                    "src": "2979:233:24",
                    "text": " @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n Emits an {AuthorizedOperator} event.\n Requirements\n - `operator` cannot be calling address."
                  },
                  "functionSelector": "959b8c3f",
                  "id": 3081,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "authorizeOperator",
                  "nameLocation": "3226:17:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3078,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3252:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3081,
                        "src": "3244:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3077,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3244:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3243:18:24"
                  },
                  "returnParameters": {
                    "id": 3080,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3270:0:24"
                  },
                  "scope": 3171,
                  "src": "3217:54:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3082,
                    "nodeType": "StructuredDocumentation",
                    "src": "3277:261:24",
                    "text": " @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n Emits a {RevokedOperator} event.\n Requirements\n - `operator` cannot be calling address."
                  },
                  "functionSelector": "fad8b32a",
                  "id": 3087,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeOperator",
                  "nameLocation": "3552:14:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3084,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3575:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3087,
                        "src": "3567:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3567:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3566:18:24"
                  },
                  "returnParameters": {
                    "id": 3086,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3593:0:24"
                  },
                  "scope": 3171,
                  "src": "3543:51:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3088,
                    "nodeType": "StructuredDocumentation",
                    "src": "3600:338:24",
                    "text": " @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."
                  },
                  "functionSelector": "06e48538",
                  "id": 3094,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "defaultOperators",
                  "nameLocation": "3952:16:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3089,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3968:2:24"
                  },
                  "returnParameters": {
                    "id": 3093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3092,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3094,
                        "src": "3994:16:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3090,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3994:7:24",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3091,
                          "nodeType": "ArrayTypeName",
                          "src": "3994:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3993:18:24"
                  },
                  "scope": 3171,
                  "src": "3943:69:24",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3095,
                    "nodeType": "StructuredDocumentation",
                    "src": "4018:714:24",
                    "text": " @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."
                  },
                  "functionSelector": "62ad1b83",
                  "id": 3108,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "operatorSend",
                  "nameLocation": "4746:12:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3097,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "4776:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3108,
                        "src": "4768:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3096,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4768:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3099,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4800:9:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3108,
                        "src": "4792:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3098,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4792:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3101,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4827:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3108,
                        "src": "4819:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4819:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3103,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4858:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3108,
                        "src": "4843:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3102,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4843:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3105,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "4887:12:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3108,
                        "src": "4872:27:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3104,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4872:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4758:147:24"
                  },
                  "returnParameters": {
                    "id": 3107,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4914:0:24"
                  },
                  "scope": 3171,
                  "src": "4737:178:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3109,
                    "nodeType": "StructuredDocumentation",
                    "src": "4921:532:24",
                    "text": " @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."
                  },
                  "functionSelector": "fc673c4f",
                  "id": 3120,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "operatorBurn",
                  "nameLocation": "5467:12:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3111,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "5497:7:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5489:15:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3110,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5489:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3113,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5522:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5514:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3112,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5514:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3115,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5553:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5538:19:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3114,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5538:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3117,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "5582:12:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3120,
                        "src": "5567:27:24",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3116,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5567:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5479:121:24"
                  },
                  "returnParameters": {
                    "id": 3119,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5609:0:24"
                  },
                  "scope": 3171,
                  "src": "5458:152:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "id": 3134,
                  "name": "Sent",
                  "nameLocation": "5622:4:24",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3122,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5652:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "5636:24:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5636:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3124,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5686:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "5670:20:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3123,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5670:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3126,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5716:2:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "5700:18:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3125,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5700:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3128,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5736:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "5728:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5728:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3130,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5758:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "5752:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3129,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5752:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3132,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "5778:12:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3134,
                        "src": "5772:18:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3131,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5772:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5626:170:24"
                  },
                  "src": "5616:181:24"
                },
                {
                  "anonymous": false,
                  "id": 3146,
                  "name": "Minted",
                  "nameLocation": "5809:6:24",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3136,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5832:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3146,
                        "src": "5816:24:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3135,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5816:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3138,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5858:2:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3146,
                        "src": "5842:18:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3137,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5842:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3140,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5870:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3146,
                        "src": "5862:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5862:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3142,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5884:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3146,
                        "src": "5878:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3141,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5878:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3144,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "5896:12:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3146,
                        "src": "5890:18:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3143,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5890:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5815:94:24"
                  },
                  "src": "5803:107:24"
                },
                {
                  "anonymous": false,
                  "id": 3158,
                  "name": "Burned",
                  "nameLocation": "5922:6:24",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3148,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5945:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3158,
                        "src": "5929:24:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3147,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5929:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3150,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5971:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3158,
                        "src": "5955:20:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3149,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5955:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3152,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5985:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3158,
                        "src": "5977:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5977:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3154,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5999:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3158,
                        "src": "5993:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3153,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5993:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3156,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "6011:12:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3158,
                        "src": "6005:18:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3155,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6005:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5928:96:24"
                  },
                  "src": "5916:109:24"
                },
                {
                  "anonymous": false,
                  "id": 3164,
                  "name": "AuthorizedOperator",
                  "nameLocation": "6037:18:24",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3160,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6072:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3164,
                        "src": "6056:24:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3159,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6056:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3162,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "6098:11:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3164,
                        "src": "6082:27:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6082:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6055:55:24"
                  },
                  "src": "6031:80:24"
                },
                {
                  "anonymous": false,
                  "id": 3170,
                  "name": "RevokedOperator",
                  "nameLocation": "6123:15:24",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3166,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6155:8:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3170,
                        "src": "6139:24:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6139:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3168,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenHolder",
                        "nameLocation": "6181:11:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3170,
                        "src": "6165:27:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3167,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6165:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6138:55:24"
                  },
                  "src": "6117:77:24"
                }
              ],
              "scope": 3172,
              "src": "491:5705:24",
              "usedErrors": []
            }
          ],
          "src": "93:6104:24"
        },
        "id": 24
      },
      "openzeppelin-contracts-V4/utils/Address.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ]
          },
          "id": 3467,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3173,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".1"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:23:25"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Address",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3174,
                "nodeType": "StructuredDocumentation",
                "src": "126:67:25",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 3466,
              "linearizedBaseContracts": [
                3466
              ],
              "name": "Address",
              "nameLocation": "202:7:25",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3188,
                    "nodeType": "Block",
                    "src": "1241:254:25",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 3182,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3177,
                                "src": "1465:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1465:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1465:19:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1487:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1465:23:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3181,
                        "id": 3187,
                        "nodeType": "Return",
                        "src": "1458:30:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3175,
                    "nodeType": "StructuredDocumentation",
                    "src": "216:954:25",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="
                  },
                  "id": 3189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nameLocation": "1184:10:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3177,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "1203:7:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3189,
                        "src": "1195:15:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1195:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:17:25"
                  },
                  "returnParameters": {
                    "id": 3181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3180,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3189,
                        "src": "1235:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3179,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1235:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1234:6:25"
                  },
                  "scope": 3466,
                  "src": "1175:320:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3222,
                    "nodeType": "Block",
                    "src": "2483:241:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3200,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2509:4:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$3466",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$3466",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 3199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2501:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3198,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2501:7:25",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2501:13:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 3202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "2501:21:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3203,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3194,
                                "src": "2526:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2501:31:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 3205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2534:31:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              },
                              "value": "Address: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              }
                            ],
                            "id": 3197,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2493:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2493:73:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3207,
                        "nodeType": "ExpressionStatement",
                        "src": "2493:73:25"
                      },
                      {
                        "assignments": [
                          3209,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3209,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2583:7:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3222,
                            "src": "2578:12:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3208,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2578:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3216,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 3214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2626:2:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 3210,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3192,
                                "src": "2596:9:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 3211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "2596:14:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 3213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 3212,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3194,
                                "src": "2618:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2596:29:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 3215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2596:33:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2577:52:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3218,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3209,
                              "src": "2647:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 3219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2656:60:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              },
                              "value": "Address: unable to send value, recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              }
                            ],
                            "id": 3217,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2639:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2639:78:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3221,
                        "nodeType": "ExpressionStatement",
                        "src": "2639:78:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3190,
                    "nodeType": "StructuredDocumentation",
                    "src": "1501:906:25",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 3223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "2421:9:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3192,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2447:9:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3223,
                        "src": "2431:25:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:15:25",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3194,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2466:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3223,
                        "src": "2458:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3193,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2458:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:43:25"
                  },
                  "returnParameters": {
                    "id": 3196,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2483:0:25"
                  },
                  "scope": 3466,
                  "src": "2412:312:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3239,
                    "nodeType": "Block",
                    "src": "3555:84:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3234,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "3585:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3235,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3228,
                              "src": "3593:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 3236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3599:32:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              },
                              "value": "Address: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                "typeString": "literal_string \"Address: low-level call failed\""
                              }
                            ],
                            "id": 3233,
                            "name": "functionCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3240,
                              3260
                            ],
                            "referencedDeclaration": 3260,
                            "src": "3572:12:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3572:60:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3232,
                        "id": 3238,
                        "nodeType": "Return",
                        "src": "3565:67:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3224,
                    "nodeType": "StructuredDocumentation",
                    "src": "2730:731:25",
                    "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                  },
                  "id": 3240,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3475:12:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3226,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3496:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3240,
                        "src": "3488:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3488:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3228,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3517:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3240,
                        "src": "3504:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3227,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3504:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3487:35:25"
                  },
                  "returnParameters": {
                    "id": 3232,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3231,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3240,
                        "src": "3541:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3230,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3541:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3540:14:25"
                  },
                  "scope": 3466,
                  "src": "3466:173:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3259,
                    "nodeType": "Block",
                    "src": "4008:76:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3253,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3243,
                              "src": "4047:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3254,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "4055:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 3255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4061:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "id": 3256,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3247,
                              "src": "4064:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3252,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3280,
                              3330
                            ],
                            "referencedDeclaration": 3330,
                            "src": "4025:21:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4025:52:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3251,
                        "id": 3258,
                        "nodeType": "Return",
                        "src": "4018:59:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3241,
                    "nodeType": "StructuredDocumentation",
                    "src": "3645:211:25",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 3260,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "3870:12:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3243,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3900:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3260,
                        "src": "3892:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3242,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3892:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3245,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3929:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3260,
                        "src": "3916:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3244,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3916:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3247,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "3957:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3260,
                        "src": "3943:26:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3246,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3943:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3882:93:25"
                  },
                  "returnParameters": {
                    "id": 3251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3250,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3260,
                        "src": "3994:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3249,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3994:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3993:14:25"
                  },
                  "scope": 3466,
                  "src": "3861:223:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3279,
                    "nodeType": "Block",
                    "src": "4589:111:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3273,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3263,
                              "src": "4628:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3274,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3265,
                              "src": "4636:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3275,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3267,
                              "src": "4642:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                              "id": 3276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4649:43:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              },
                              "value": "Address: low-level call with value failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                "typeString": "literal_string \"Address: low-level call with value failed\""
                              }
                            ],
                            "id": 3272,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3280,
                              3330
                            ],
                            "referencedDeclaration": 3330,
                            "src": "4606:21:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4606:87:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3271,
                        "id": 3278,
                        "nodeType": "Return",
                        "src": "4599:94:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3261,
                    "nodeType": "StructuredDocumentation",
                    "src": "4090:351:25",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                  },
                  "id": 3280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4455:21:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3263,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4494:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3280,
                        "src": "4486:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3262,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4486:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3265,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4523:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3280,
                        "src": "4510:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3264,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4510:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3267,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4545:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3280,
                        "src": "4537:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4537:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4476:80:25"
                  },
                  "returnParameters": {
                    "id": 3271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3270,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3280,
                        "src": "4575:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3269,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4575:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4574:14:25"
                  },
                  "scope": 3466,
                  "src": "4446:254:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3329,
                    "nodeType": "Block",
                    "src": "5127:320:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3297,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5153:4:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$3466",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$3466",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 3296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5145:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3295,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5145:7:25",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5145:13:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 3299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "5145:21:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3300,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3287,
                                "src": "5170:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5145:30:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                              "id": 3302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5177:40:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              },
                              "value": "Address: insufficient balance for call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                "typeString": "literal_string \"Address: insufficient balance for call\""
                              }
                            ],
                            "id": 3294,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5137:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5137:81:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3304,
                        "nodeType": "ExpressionStatement",
                        "src": "5137:81:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3307,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3283,
                                  "src": "5247:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3306,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3189,
                                "src": "5236:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5236:18:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 3309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5256:31:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              },
                              "value": "Address: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                "typeString": "literal_string \"Address: call to non-contract\""
                              }
                            ],
                            "id": 3305,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5228:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5228:60:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3311,
                        "nodeType": "ExpressionStatement",
                        "src": "5228:60:25"
                      },
                      {
                        "assignments": [
                          3313,
                          3315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3313,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5305:7:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3329,
                            "src": "5300:12:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3312,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5300:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3315,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "5327:10:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3329,
                            "src": "5314:23:25",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3314,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5314:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3322,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3320,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3285,
                              "src": "5367:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 3316,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3283,
                                "src": "5341:6:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5341:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 3319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 3318,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3287,
                                "src": "5360:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5341:25:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 3321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5341:31:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5299:73:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3324,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3313,
                              "src": "5406:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3325,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3315,
                              "src": "5415:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3326,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3289,
                              "src": "5427:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3323,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "5389:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 3327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5389:51:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3293,
                        "id": 3328,
                        "nodeType": "Return",
                        "src": "5382:58:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3281,
                    "nodeType": "StructuredDocumentation",
                    "src": "4706:237:25",
                    "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                  },
                  "id": 3330,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "4957:21:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3290,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3283,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4996:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3330,
                        "src": "4988:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4988:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3285,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5025:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3330,
                        "src": "5012:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3284,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5012:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3287,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5047:5:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3330,
                        "src": "5039:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5039:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3289,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "5076:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3330,
                        "src": "5062:26:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3288,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5062:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4978:116:25"
                  },
                  "returnParameters": {
                    "id": 3293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3292,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3330,
                        "src": "5113:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3291,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5113:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5112:14:25"
                  },
                  "scope": 3466,
                  "src": "4948:499:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3346,
                    "nodeType": "Block",
                    "src": "5724:97:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3341,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3333,
                              "src": "5760:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3342,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3335,
                              "src": "5768:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                              "id": 3343,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5774:39:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              },
                              "value": "Address: low-level static call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                "typeString": "literal_string \"Address: low-level static call failed\""
                              }
                            ],
                            "id": 3340,
                            "name": "functionStaticCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3347,
                              3382
                            ],
                            "referencedDeclaration": 3382,
                            "src": "5741:18:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                            }
                          },
                          "id": 3344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5741:73:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3339,
                        "id": 3345,
                        "nodeType": "Return",
                        "src": "5734:80:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3331,
                    "nodeType": "StructuredDocumentation",
                    "src": "5453:166:25",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 3347,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "5633:18:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3333,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "5660:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3347,
                        "src": "5652:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3332,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5652:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3335,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5681:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3347,
                        "src": "5668:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3334,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5668:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5651:35:25"
                  },
                  "returnParameters": {
                    "id": 3339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3338,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3347,
                        "src": "5710:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3337,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5710:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5709:14:25"
                  },
                  "scope": 3466,
                  "src": "5624:197:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3381,
                    "nodeType": "Block",
                    "src": "6163:228:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3361,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3350,
                                  "src": "6192:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3360,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3189,
                                "src": "6181:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6181:18:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 3363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6201:38:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              },
                              "value": "Address: static call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                "typeString": "literal_string \"Address: static call to non-contract\""
                              }
                            ],
                            "id": 3359,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6173:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6173:67:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3365,
                        "nodeType": "ExpressionStatement",
                        "src": "6173:67:25"
                      },
                      {
                        "assignments": [
                          3367,
                          3369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3367,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "6257:7:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3381,
                            "src": "6252:12:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3366,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6252:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3369,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "6279:10:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3381,
                            "src": "6266:23:25",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3368,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6266:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3374,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3372,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3352,
                              "src": "6311:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3370,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3350,
                              "src": "6293:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6293:17:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 3373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6293:23:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6251:65:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3376,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3367,
                              "src": "6350:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3377,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3369,
                              "src": "6359:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3378,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3354,
                              "src": "6371:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3375,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "6333:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 3379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6333:51:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3358,
                        "id": 3380,
                        "nodeType": "Return",
                        "src": "6326:58:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3348,
                    "nodeType": "StructuredDocumentation",
                    "src": "5827:173:25",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                  },
                  "id": 3382,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "6014:18:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3350,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6050:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3382,
                        "src": "6042:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3349,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6042:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3352,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6079:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3382,
                        "src": "6066:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3351,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6066:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3354,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "6107:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3382,
                        "src": "6093:26:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3353,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6093:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6032:93:25"
                  },
                  "returnParameters": {
                    "id": 3358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3357,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3382,
                        "src": "6149:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3356,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6149:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6148:14:25"
                  },
                  "scope": 3466,
                  "src": "6005:386:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3398,
                    "nodeType": "Block",
                    "src": "6667:101:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3393,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3385,
                              "src": "6705:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3394,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3387,
                              "src": "6713:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                              "id": 3395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6719:41:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              },
                              "value": "Address: low-level delegate call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                              }
                            ],
                            "id": 3392,
                            "name": "functionDelegateCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3399,
                              3434
                            ],
                            "referencedDeclaration": 3434,
                            "src": "6684:20:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                            }
                          },
                          "id": 3396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:77:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3391,
                        "id": 3397,
                        "nodeType": "Return",
                        "src": "6677:84:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3383,
                    "nodeType": "StructuredDocumentation",
                    "src": "6397:168:25",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 3399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6579:20:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3385,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "6608:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3399,
                        "src": "6600:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3384,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6600:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3387,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6629:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3399,
                        "src": "6616:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3386,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6616:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6599:35:25"
                  },
                  "returnParameters": {
                    "id": 3391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3390,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3399,
                        "src": "6653:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3389,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6653:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6652:14:25"
                  },
                  "scope": 3466,
                  "src": "6570:198:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3433,
                    "nodeType": "Block",
                    "src": "7109:232:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3413,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3402,
                                  "src": "7138:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3412,
                                "name": "isContract",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3189,
                                "src": "7127:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 3414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7127:18:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 3415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7147:40:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              },
                              "value": "Address: delegate call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                              }
                            ],
                            "id": 3411,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7119:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7119:69:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3417,
                        "nodeType": "ExpressionStatement",
                        "src": "7119:69:25"
                      },
                      {
                        "assignments": [
                          3419,
                          3421
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3419,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "7205:7:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3433,
                            "src": "7200:12:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3418,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7200:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3421,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "7227:10:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 3433,
                            "src": "7214:23:25",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3420,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7214:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3426,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3424,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3404,
                              "src": "7261:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3422,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3402,
                              "src": "7241:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "7241:19:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 3425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7241:25:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7199:67:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3428,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3419,
                              "src": "7300:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3429,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3421,
                              "src": "7309:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3430,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3406,
                              "src": "7321:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3427,
                            "name": "verifyCallResult",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "7283:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 3431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7283:51:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3410,
                        "id": 3432,
                        "nodeType": "Return",
                        "src": "7276:58:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3400,
                    "nodeType": "StructuredDocumentation",
                    "src": "6774:175:25",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                  },
                  "id": 3434,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "6963:20:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3402,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "7001:6:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3434,
                        "src": "6993:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3401,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6993:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3404,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7030:4:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3434,
                        "src": "7017:17:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3403,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7017:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3406,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7058:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3434,
                        "src": "7044:26:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3405,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7044:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6983:93:25"
                  },
                  "returnParameters": {
                    "id": 3410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3409,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3434,
                        "src": "7095:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3408,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7095:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7094:14:25"
                  },
                  "scope": 3466,
                  "src": "6954:387:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3464,
                    "nodeType": "Block",
                    "src": "7721:532:25",
                    "statements": [
                      {
                        "condition": {
                          "id": 3446,
                          "name": "success",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3437,
                          "src": "7735:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3462,
                          "nodeType": "Block",
                          "src": "7792:455:25",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 3450,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3439,
                                    "src": "7876:10:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "7876:17:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3452,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7896:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7876:21:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3460,
                                "nodeType": "Block",
                                "src": "8184:53:25",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3457,
                                          "name": "errorMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3441,
                                          "src": "8209:12:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 3456,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "8202:6:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 3458,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8202:20:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3459,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8202:20:25"
                                  }
                                ]
                              },
                              "id": 3461,
                              "nodeType": "IfStatement",
                              "src": "7872:365:25",
                              "trueBody": {
                                "id": 3455,
                                "nodeType": "Block",
                                "src": "7899:279:25",
                                "statements": [
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "8019:145:25",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "8041:40:25",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "returndata",
                                                "nodeType": "YulIdentifier",
                                                "src": "8070:10:25"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "8064:5:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8064:17:25"
                                          },
                                          "variables": [
                                            {
                                              "name": "returndata_size",
                                              "nodeType": "YulTypedName",
                                              "src": "8045:15:25",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "8113:2:25",
                                                    "type": "",
                                                    "value": "32"
                                                  },
                                                  {
                                                    "name": "returndata",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8117:10:25"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8109:3:25"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8109:19:25"
                                              },
                                              {
                                                "name": "returndata_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "8130:15:25"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "8102:6:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8102:44:25"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "8102:44:25"
                                        }
                                      ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 3439,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8070:10:25",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 3439,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "8117:10:25",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 3454,
                                    "nodeType": "InlineAssembly",
                                    "src": "8010:154:25"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 3463,
                        "nodeType": "IfStatement",
                        "src": "7731:516:25",
                        "trueBody": {
                          "id": 3449,
                          "nodeType": "Block",
                          "src": "7744:42:25",
                          "statements": [
                            {
                              "expression": {
                                "id": 3447,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3439,
                                "src": "7765:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 3445,
                              "id": 3448,
                              "nodeType": "Return",
                              "src": "7758:17:25"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3435,
                    "nodeType": "StructuredDocumentation",
                    "src": "7347:209:25",
                    "text": " @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"
                  },
                  "id": 3465,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "7570:16:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3437,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "7601:7:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3465,
                        "src": "7596:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3436,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3439,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "7631:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3465,
                        "src": "7618:23:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3438,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7618:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3441,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nameLocation": "7665:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3465,
                        "src": "7651:26:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3440,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7651:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7586:97:25"
                  },
                  "returnParameters": {
                    "id": 3445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3444,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3465,
                        "src": "7707:12:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3443,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7707:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7706:14:25"
                  },
                  "scope": 3466,
                  "src": "7561:692:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3467,
              "src": "194:8061:25",
              "usedErrors": []
            }
          ],
          "src": "101:8155:25"
        },
        "id": 25
      },
      "openzeppelin-contracts-V4/utils/Context.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              3488
            ]
          },
          "id": 3489,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3468,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:26"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Context",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3469,
                "nodeType": "StructuredDocumentation",
                "src": "111:496:26",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 3488,
              "linearizedBaseContracts": [
                3488
              ],
              "name": "Context",
              "nameLocation": "626:7:26",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3477,
                    "nodeType": "Block",
                    "src": "702:34:26",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 3474,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "719:3:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "719:10:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3473,
                        "id": 3476,
                        "nodeType": "Return",
                        "src": "712:17:26"
                      }
                    ]
                  },
                  "id": 3478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "649:10:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3470,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "659:2:26"
                  },
                  "returnParameters": {
                    "id": 3473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3472,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3478,
                        "src": "693:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "693:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "692:9:26"
                  },
                  "scope": 3488,
                  "src": "640:96:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3486,
                    "nodeType": "Block",
                    "src": "809:32:26",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 3483,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "826:3:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "826:8:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 3482,
                        "id": 3485,
                        "nodeType": "Return",
                        "src": "819:15:26"
                      }
                    ]
                  },
                  "id": 3487,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "751:8:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "759:2:26"
                  },
                  "returnParameters": {
                    "id": 3482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3481,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3487,
                        "src": "793:14:26",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3480,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:16:26"
                  },
                  "scope": 3488,
                  "src": "742:99:26",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3489,
              "src": "608:235:26",
              "usedErrors": []
            }
          ],
          "src": "86:758:26"
        },
        "id": 26
      },
      "openzeppelin-contracts-V4/utils/Create2.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/utils/Create2.sol",
          "exportedSymbols": {
            "Create2": [
              3599
            ]
          },
          "id": 3600,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3490,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:27"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Create2",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3491,
                "nodeType": "StructuredDocumentation",
                "src": "111:367:27",
                "text": " @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n `CREATE2` can be used to compute in advance the address where a smart\n contract will be deployed, which allows for interesting new mechanisms known\n as 'counterfactual interactions'.\n See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n information."
              },
              "fullyImplemented": true,
              "id": 3599,
              "linearizedBaseContracts": [
                3599
              ],
              "name": "Create2",
              "nameLocation": "487:7:27",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3538,
                    "nodeType": "Block",
                    "src": "1192:383:27",
                    "statements": [
                      {
                        "assignments": [
                          3504
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3504,
                            "mutability": "mutable",
                            "name": "addr",
                            "nameLocation": "1210:4:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3538,
                            "src": "1202:12:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3503,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1202:7:27",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3505,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1202:12:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3513,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3509,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1240:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Create2_$3599",
                                        "typeString": "library Create2"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Create2_$3599",
                                        "typeString": "library Create2"
                                      }
                                    ],
                                    "id": 3508,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1232:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3507,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1232:7:27",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3510,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1232:13:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 3511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "1232:21:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 3512,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3494,
                                "src": "1257:6:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1232:31:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "437265617465323a20696e73756666696369656e742062616c616e6365",
                              "id": 3514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1265:31:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca",
                                "typeString": "literal_string \"Create2: insufficient balance\""
                              },
                              "value": "Create2: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f94f9c62541b73155a9def26a7988ac5579c2c6b698df8f608ced5572b7d72ca",
                                "typeString": "literal_string \"Create2: insufficient balance\""
                              }
                            ],
                            "id": 3506,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1224:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1224:73:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3516,
                        "nodeType": "ExpressionStatement",
                        "src": "1224:73:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3518,
                                  "name": "bytecode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3498,
                                  "src": "1315:8:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 3519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1315:15:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1334:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1315:20:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "437265617465323a2062797465636f6465206c656e677468206973207a65726f",
                              "id": 3522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1337:34:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0",
                                "typeString": "literal_string \"Create2: bytecode length is zero\""
                              },
                              "value": "Create2: bytecode length is zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_124767115c09b0dd37c31c42ddb030d84459c933a30879cc32c4c922ae5928f0",
                                "typeString": "literal_string \"Create2: bytecode length is zero\""
                              }
                            ],
                            "id": 3517,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1307:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1307:65:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3524,
                        "nodeType": "ExpressionStatement",
                        "src": "1307:65:27"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1391:91:27",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1405:67:27",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "1421:6:27"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "bytecode",
                                        "nodeType": "YulIdentifier",
                                        "src": "1433:8:27"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1443:4:27",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1429:3:27"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1429:19:27"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "bytecode",
                                        "nodeType": "YulIdentifier",
                                        "src": "1456:8:27"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1450:5:27"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1450:15:27"
                                  },
                                  {
                                    "name": "salt",
                                    "nodeType": "YulIdentifier",
                                    "src": "1467:4:27"
                                  }
                                ],
                                "functionName": {
                                  "name": "create2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1413:7:27"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1413:59:27"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1405:4:27"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3504,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1405:4:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3494,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1421:6:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3498,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1433:8:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3498,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1456:8:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3496,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1467:4:27",
                            "valueSize": 1
                          }
                        ],
                        "id": 3525,
                        "nodeType": "InlineAssembly",
                        "src": "1382:100:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3527,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3504,
                                "src": "1499:4:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1515:1:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1507:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3528,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1507:7:27",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1507:10:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1499:18:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "437265617465323a204661696c6564206f6e206465706c6f79",
                              "id": 3533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1519:27:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676",
                                "typeString": "literal_string \"Create2: Failed on deploy\""
                              },
                              "value": "Create2: Failed on deploy"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_87142438d464a3cd804331cca8480b31569380ef25d1f39b80404975699f0676",
                                "typeString": "literal_string \"Create2: Failed on deploy\""
                              }
                            ],
                            "id": 3526,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1491:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1491:56:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3535,
                        "nodeType": "ExpressionStatement",
                        "src": "1491:56:27"
                      },
                      {
                        "expression": {
                          "id": 3536,
                          "name": "addr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3504,
                          "src": "1564:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3502,
                        "id": 3537,
                        "nodeType": "Return",
                        "src": "1557:11:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3492,
                    "nodeType": "StructuredDocumentation",
                    "src": "501:560:27",
                    "text": " @dev Deploys a contract using `CREATE2`. The address where the contract\n will be deployed can be known in advance via {computeAddress}.\n The bytecode for a contract can be obtained from Solidity with\n `type(contractName).creationCode`.\n Requirements:\n - `bytecode` must not be empty.\n - `salt` must have not been used for `bytecode` already.\n - the factory must have a balance of at least `amount`.\n - if `amount` is non-zero, `bytecode` must have a `payable` constructor."
                  },
                  "id": 3539,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deploy",
                  "nameLocation": "1075:6:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3499,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3494,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1099:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3539,
                        "src": "1091:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1091:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3496,
                        "mutability": "mutable",
                        "name": "salt",
                        "nameLocation": "1123:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3539,
                        "src": "1115:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3495,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1115:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3498,
                        "mutability": "mutable",
                        "name": "bytecode",
                        "nameLocation": "1150:8:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3539,
                        "src": "1137:21:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3497,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1137:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1081:83:27"
                  },
                  "returnParameters": {
                    "id": 3502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3501,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3539,
                        "src": "1183:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1182:9:27"
                  },
                  "scope": 3599,
                  "src": "1066:509:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3558,
                    "nodeType": "Block",
                    "src": "1871:73:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3550,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3542,
                              "src": "1903:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3551,
                              "name": "bytecodeHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3544,
                              "src": "1909:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 3554,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1931:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Create2_$3599",
                                    "typeString": "library Create2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Create2_$3599",
                                    "typeString": "library Create2"
                                  }
                                ],
                                "id": 3553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1923:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3552,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1923:7:27",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1923:13:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3549,
                            "name": "computeAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3559,
                              3598
                            ],
                            "referencedDeclaration": 3598,
                            "src": "1888:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes32,address) pure returns (address)"
                            }
                          },
                          "id": 3556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1888:49:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3548,
                        "id": 3557,
                        "nodeType": "Return",
                        "src": "1881:56:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3540,
                    "nodeType": "StructuredDocumentation",
                    "src": "1581:193:27",
                    "text": " @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n `bytecodeHash` or `salt` will result in a new destination address."
                  },
                  "id": 3559,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "computeAddress",
                  "nameLocation": "1788:14:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3542,
                        "mutability": "mutable",
                        "name": "salt",
                        "nameLocation": "1811:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3559,
                        "src": "1803:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3541,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1803:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3544,
                        "mutability": "mutable",
                        "name": "bytecodeHash",
                        "nameLocation": "1825:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3559,
                        "src": "1817:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3543,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1802:36:27"
                  },
                  "returnParameters": {
                    "id": 3548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3547,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3559,
                        "src": "1862:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1862:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1861:9:27"
                  },
                  "scope": 3599,
                  "src": "1779:165:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3597,
                    "nodeType": "Block",
                    "src": "2327:153:27",
                    "statements": [
                      {
                        "assignments": [
                          3572
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3572,
                            "mutability": "mutable",
                            "name": "_data",
                            "nameLocation": "2345:5:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3597,
                            "src": "2337:13:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3571,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2337:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3585,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30786666",
                                      "id": 3578,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2387:4:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      },
                                      "value": "0xff"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_255_by_1",
                                        "typeString": "int_const 255"
                                      }
                                    ],
                                    "id": 3577,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2380:6:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 3576,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2380:6:27",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3579,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2380:12:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                {
                                  "id": 3580,
                                  "name": "deployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "2394:8:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 3581,
                                  "name": "salt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3562,
                                  "src": "2404:4:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3582,
                                  "name": "bytecodeHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3564,
                                  "src": "2410:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 3574,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2363:3:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "2363:16:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2363:60:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3573,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2353:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2353:71:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2337:87:27"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 3592,
                                      "name": "_data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3572,
                                      "src": "2465:5:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 3591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2457:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3590,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2457:7:27",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2457:14:27",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2449:7:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 3588,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2449:7:27",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2449:23:27",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 3587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2441:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3586,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2441:7:27",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2441:32:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3570,
                        "id": 3596,
                        "nodeType": "Return",
                        "src": "2434:39:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3560,
                    "nodeType": "StructuredDocumentation",
                    "src": "1950:232:27",
                    "text": " @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}."
                  },
                  "id": 3598,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "computeAddress",
                  "nameLocation": "2196:14:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3562,
                        "mutability": "mutable",
                        "name": "salt",
                        "nameLocation": "2228:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3598,
                        "src": "2220:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3561,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2220:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3564,
                        "mutability": "mutable",
                        "name": "bytecodeHash",
                        "nameLocation": "2250:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3598,
                        "src": "2242:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3563,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2242:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3566,
                        "mutability": "mutable",
                        "name": "deployer",
                        "nameLocation": "2280:8:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3598,
                        "src": "2272:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3565,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2272:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2210:84:27"
                  },
                  "returnParameters": {
                    "id": 3570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3569,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3598,
                        "src": "2318:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2318:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2317:9:27"
                  },
                  "scope": 3599,
                  "src": "2187:293:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3600,
              "src": "479:2003:27",
              "usedErrors": []
            }
          ],
          "src": "86:2397:27"
        },
        "id": 27
      },
      "openzeppelin-contracts-V4/utils/StorageSlot.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/utils/StorageSlot.sol",
          "exportedSymbols": {
            "StorageSlot": [
              3659
            ]
          },
          "id": 3660,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3601,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "90:23:28"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "StorageSlot",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3602,
                "nodeType": "StructuredDocumentation",
                "src": "115:1148:28",
                "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._"
              },
              "fullyImplemented": true,
              "id": 3659,
              "linearizedBaseContracts": [
                3659
              ],
              "name": "StorageSlot",
              "nameLocation": "1272:11:28",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "StorageSlot.AddressSlot",
                  "id": 3605,
                  "members": [
                    {
                      "constant": false,
                      "id": 3604,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1327:5:28",
                      "nodeType": "VariableDeclaration",
                      "scope": 3605,
                      "src": "1319:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3603,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1319:7:28",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "AddressSlot",
                  "nameLocation": "1297:11:28",
                  "nodeType": "StructDefinition",
                  "scope": 3659,
                  "src": "1290:49:28",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.BooleanSlot",
                  "id": 3608,
                  "members": [
                    {
                      "constant": false,
                      "id": 3607,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1379:5:28",
                      "nodeType": "VariableDeclaration",
                      "scope": 3608,
                      "src": "1374:10:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3606,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1374:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BooleanSlot",
                  "nameLocation": "1352:11:28",
                  "nodeType": "StructDefinition",
                  "scope": 3659,
                  "src": "1345:46:28",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Bytes32Slot",
                  "id": 3611,
                  "members": [
                    {
                      "constant": false,
                      "id": 3610,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1434:5:28",
                      "nodeType": "VariableDeclaration",
                      "scope": 3611,
                      "src": "1426:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3609,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1426:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Bytes32Slot",
                  "nameLocation": "1404:11:28",
                  "nodeType": "StructDefinition",
                  "scope": 3659,
                  "src": "1397:49:28",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Uint256Slot",
                  "id": 3614,
                  "members": [
                    {
                      "constant": false,
                      "id": 3613,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1489:5:28",
                      "nodeType": "VariableDeclaration",
                      "scope": 3614,
                      "src": "1481:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3612,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1481:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Uint256Slot",
                  "nameLocation": "1459:11:28",
                  "nodeType": "StructDefinition",
                  "scope": 3659,
                  "src": "1452:49:28",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3624,
                    "nodeType": "Block",
                    "src": "1683:63:28",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1702:38:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1716:14:28",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "1726:4:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "1716:6:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3621,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "1716:6:28",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3617,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1726:4:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 3623,
                        "nodeType": "InlineAssembly",
                        "src": "1693:47:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3615,
                    "nodeType": "StructuredDocumentation",
                    "src": "1507:87:28",
                    "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
                  },
                  "id": 3625,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressSlot",
                  "nameLocation": "1608:14:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3617,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1631:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3625,
                        "src": "1623:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3616,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1622:14:28"
                  },
                  "returnParameters": {
                    "id": 3622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3621,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1680:1:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3625,
                        "src": "1660:21:28",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                          "typeString": "struct StorageSlot.AddressSlot"
                        },
                        "typeName": {
                          "id": 3620,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3619,
                            "name": "AddressSlot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3605,
                            "src": "1660:11:28"
                          },
                          "referencedDeclaration": 3605,
                          "src": "1660:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSlot_$3605_storage_ptr",
                            "typeString": "struct StorageSlot.AddressSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1659:23:28"
                  },
                  "scope": 3659,
                  "src": "1599:147:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3635,
                    "nodeType": "Block",
                    "src": "1928:63:28",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1947:38:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1961:14:28",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "1971:4:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "1961:6:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3632,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "1961:6:28",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3628,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1971:4:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 3634,
                        "nodeType": "InlineAssembly",
                        "src": "1938:47:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3626,
                    "nodeType": "StructuredDocumentation",
                    "src": "1752:87:28",
                    "text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."
                  },
                  "id": 3636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBooleanSlot",
                  "nameLocation": "1853:14:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3628,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1876:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3636,
                        "src": "1868:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3627,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1868:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1867:14:28"
                  },
                  "returnParameters": {
                    "id": 3633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3632,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1925:1:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3636,
                        "src": "1905:21:28",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BooleanSlot_$3608_storage_ptr",
                          "typeString": "struct StorageSlot.BooleanSlot"
                        },
                        "typeName": {
                          "id": 3631,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3630,
                            "name": "BooleanSlot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "1905:11:28"
                          },
                          "referencedDeclaration": 3608,
                          "src": "1905:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BooleanSlot_$3608_storage_ptr",
                            "typeString": "struct StorageSlot.BooleanSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1904:23:28"
                  },
                  "scope": 3659,
                  "src": "1844:147:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3646,
                    "nodeType": "Block",
                    "src": "2173:63:28",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2192:38:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2206:14:28",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2216:4:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2206:6:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3643,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2206:6:28",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3639,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2216:4:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 3645,
                        "nodeType": "InlineAssembly",
                        "src": "2183:47:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3637,
                    "nodeType": "StructuredDocumentation",
                    "src": "1997:87:28",
                    "text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."
                  },
                  "id": 3647,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBytes32Slot",
                  "nameLocation": "2098:14:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3639,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2121:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3647,
                        "src": "2113:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3638,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2113:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2112:14:28"
                  },
                  "returnParameters": {
                    "id": 3644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3643,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2170:1:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3647,
                        "src": "2150:21:28",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Slot_$3611_storage_ptr",
                          "typeString": "struct StorageSlot.Bytes32Slot"
                        },
                        "typeName": {
                          "id": 3642,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3641,
                            "name": "Bytes32Slot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3611,
                            "src": "2150:11:28"
                          },
                          "referencedDeclaration": 3611,
                          "src": "2150:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Slot_$3611_storage_ptr",
                            "typeString": "struct StorageSlot.Bytes32Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2149:23:28"
                  },
                  "scope": 3659,
                  "src": "2089:147:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3657,
                    "nodeType": "Block",
                    "src": "2418:63:28",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2437:38:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2451:14:28",
                              "value": {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "2461:4:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "2451:6:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3654,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2451:6:28",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3650,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2461:4:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 3656,
                        "nodeType": "InlineAssembly",
                        "src": "2428:47:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3648,
                    "nodeType": "StructuredDocumentation",
                    "src": "2242:87:28",
                    "text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."
                  },
                  "id": 3658,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUint256Slot",
                  "nameLocation": "2343:14:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3650,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2366:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3658,
                        "src": "2358:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3649,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2358:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2357:14:28"
                  },
                  "returnParameters": {
                    "id": 3655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3654,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2415:1:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 3658,
                        "src": "2395:21:28",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Uint256Slot_$3614_storage_ptr",
                          "typeString": "struct StorageSlot.Uint256Slot"
                        },
                        "typeName": {
                          "id": 3653,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3652,
                            "name": "Uint256Slot",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3614,
                            "src": "2395:11:28"
                          },
                          "referencedDeclaration": 3614,
                          "src": "2395:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Uint256Slot_$3614_storage_ptr",
                            "typeString": "struct StorageSlot.Uint256Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2394:23:28"
                  },
                  "scope": 3659,
                  "src": "2334:147:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3660,
              "src": "1264:1219:28",
              "usedErrors": []
            }
          ],
          "src": "90:2394:28"
        },
        "id": 28
      },
      "openzeppelin-contracts-V4/utils/Strings.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-V4/utils/Strings.sol",
          "exportedSymbols": {
            "Strings": [
              3862
            ]
          },
          "id": 3863,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3661,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "86:23:29"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Strings",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3662,
                "nodeType": "StructuredDocumentation",
                "src": "111:34:29",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 3862,
              "linearizedBaseContracts": [
                3862
              ],
              "name": "Strings",
              "nameLocation": "154:7:29",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3665,
                  "mutability": "constant",
                  "name": "_HEX_SYMBOLS",
                  "nameLocation": "193:12:29",
                  "nodeType": "VariableDeclaration",
                  "scope": 3862,
                  "src": "168:58:29",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 3663,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "168:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 3664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "208:18:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3743,
                    "nodeType": "Block",
                    "src": "399:632:29",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3673,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3668,
                            "src": "601:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "610:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "601:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3679,
                        "nodeType": "IfStatement",
                        "src": "597:51:29",
                        "trueBody": {
                          "id": 3678,
                          "nodeType": "Block",
                          "src": "613:35:29",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 3676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "634:3:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 3672,
                              "id": 3677,
                              "nodeType": "Return",
                              "src": "627:10:29"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3681
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3681,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "665:4:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 3743,
                            "src": "657:12:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3680,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "657:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3683,
                        "initialValue": {
                          "id": 3682,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3668,
                          "src": "672:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "657:20:29"
                      },
                      {
                        "assignments": [
                          3685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3685,
                            "mutability": "mutable",
                            "name": "digits",
                            "nameLocation": "695:6:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 3743,
                            "src": "687:14:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3684,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "687:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3686,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "687:14:29"
                      },
                      {
                        "body": {
                          "id": 3697,
                          "nodeType": "Block",
                          "src": "729:57:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 3691,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "743:8:29",
                                "subExpression": {
                                  "id": 3690,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3685,
                                  "src": "743:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3692,
                              "nodeType": "ExpressionStatement",
                              "src": "743:8:29"
                            },
                            {
                              "expression": {
                                "id": 3695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3693,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3681,
                                  "src": "765:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 3694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "773:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "765:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3696,
                              "nodeType": "ExpressionStatement",
                              "src": "765:10:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3687,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3681,
                            "src": "718:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "726:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "718:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3698,
                        "nodeType": "WhileStatement",
                        "src": "711:75:29"
                      },
                      {
                        "assignments": [
                          3700
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3700,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "808:6:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 3743,
                            "src": "795:19:29",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3699,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "795:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3705,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3703,
                              "name": "digits",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3685,
                              "src": "827:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "817:9:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 3701,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "821:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 3704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "817:17:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "795:39:29"
                      },
                      {
                        "body": {
                          "id": 3736,
                          "nodeType": "Block",
                          "src": "863:131:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 3711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3709,
                                  "name": "digits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3685,
                                  "src": "877:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 3710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "887:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "877:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3712,
                              "nodeType": "ExpressionStatement",
                              "src": "877:11:29"
                            },
                            {
                              "expression": {
                                "id": 3730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3713,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3700,
                                    "src": "902:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3715,
                                  "indexExpression": {
                                    "id": 3714,
                                    "name": "digits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3685,
                                    "src": "909:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "902:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3727,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 3720,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "932:2:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 3725,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 3723,
                                                  "name": "value",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3668,
                                                  "src": "945:5:29",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "hexValue": "3130",
                                                  "id": 3724,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "953:2:29",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                  },
                                                  "value": "10"
                                                },
                                                "src": "945:10:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 3722,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "937:7:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 3721,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "937:7:29",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 3726,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "937:19:29",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "932:24:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3719,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "926:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 3718,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "926:5:29",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "926:31:29",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 3717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "919:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 3716,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "919:6:29",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "919:39:29",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "902:56:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 3731,
                              "nodeType": "ExpressionStatement",
                              "src": "902:56:29"
                            },
                            {
                              "expression": {
                                "id": 3734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3732,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3668,
                                  "src": "972:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 3733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "981:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "972:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3735,
                              "nodeType": "ExpressionStatement",
                              "src": "972:11:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3706,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3668,
                            "src": "851:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "860:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "851:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3737,
                        "nodeType": "WhileStatement",
                        "src": "844:150:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3740,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3700,
                              "src": "1017:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1010:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 3738,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1010:6:29",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1010:14:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3672,
                        "id": 3742,
                        "nodeType": "Return",
                        "src": "1003:21:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3666,
                    "nodeType": "StructuredDocumentation",
                    "src": "233:90:29",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 3744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "337:8:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3668,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "354:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 3744,
                        "src": "346:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:15:29"
                  },
                  "returnParameters": {
                    "id": 3672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3671,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3744,
                        "src": "384:13:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3670,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "383:15:29"
                  },
                  "scope": 3862,
                  "src": "328:703:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3784,
                    "nodeType": "Block",
                    "src": "1210:255:29",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3752,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3747,
                            "src": "1224:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1233:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1224:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3758,
                        "nodeType": "IfStatement",
                        "src": "1220:54:29",
                        "trueBody": {
                          "id": 3757,
                          "nodeType": "Block",
                          "src": "1236:38:29",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30783030",
                                "id": 3755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1257:6:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4",
                                  "typeString": "literal_string \"0x00\""
                                },
                                "value": "0x00"
                              },
                              "functionReturnParameters": 3751,
                              "id": 3756,
                              "nodeType": "Return",
                              "src": "1250:13:29"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3760
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3760,
                            "mutability": "mutable",
                            "name": "temp",
                            "nameLocation": "1291:4:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 3784,
                            "src": "1283:12:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3759,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1283:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3762,
                        "initialValue": {
                          "id": 3761,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3747,
                          "src": "1298:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1283:20:29"
                      },
                      {
                        "assignments": [
                          3764
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3764,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1321:6:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 3784,
                            "src": "1313:14:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3763,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1313:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3766,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 3765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1330:1:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1313:18:29"
                      },
                      {
                        "body": {
                          "id": 3777,
                          "nodeType": "Block",
                          "src": "1359:57:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 3771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1373:8:29",
                                "subExpression": {
                                  "id": 3770,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3764,
                                  "src": "1373:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3772,
                              "nodeType": "ExpressionStatement",
                              "src": "1373:8:29"
                            },
                            {
                              "expression": {
                                "id": 3775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3773,
                                  "name": "temp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3760,
                                  "src": "1395:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "38",
                                  "id": 3774,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1404:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "1395:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3776,
                              "nodeType": "ExpressionStatement",
                              "src": "1395:10:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3767,
                            "name": "temp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3760,
                            "src": "1348:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1356:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1348:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3778,
                        "nodeType": "WhileStatement",
                        "src": "1341:75:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3780,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3747,
                              "src": "1444:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3781,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3764,
                              "src": "1451:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3779,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3785,
                              3861
                            ],
                            "referencedDeclaration": 3861,
                            "src": "1432:11:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 3782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1432:26:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3751,
                        "id": 3783,
                        "nodeType": "Return",
                        "src": "1425:33:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3745,
                    "nodeType": "StructuredDocumentation",
                    "src": "1037:94:29",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 3785,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1145:11:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3747,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1165:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 3785,
                        "src": "1157:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3746,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1157:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1156:15:29"
                  },
                  "returnParameters": {
                    "id": 3751,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3750,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3785,
                        "src": "1195:13:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3749,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1195:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:15:29"
                  },
                  "scope": 3862,
                  "src": "1136:329:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3860,
                    "nodeType": "Block",
                    "src": "1678:351:29",
                    "statements": [
                      {
                        "assignments": [
                          3796
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3796,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "1701:6:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 3860,
                            "src": "1688:19:29",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3795,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1688:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3805,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1720:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 3800,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3790,
                                  "src": "1724:6:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1720:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 3802,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1733:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1720:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1710:9:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 3797,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1714:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 3804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1710:25:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1688:47:29"
                      },
                      {
                        "expression": {
                          "id": 3810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3806,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3796,
                              "src": "1745:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3808,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 3807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1752:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1745:9:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 3809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1757:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "1745:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 3811,
                        "nodeType": "ExpressionStatement",
                        "src": "1745:15:29"
                      },
                      {
                        "expression": {
                          "id": 3816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3812,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3796,
                              "src": "1770:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3814,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 3813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1777:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1770:9:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 3815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1782:3:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "1770:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 3817,
                        "nodeType": "ExpressionStatement",
                        "src": "1770:15:29"
                      },
                      {
                        "body": {
                          "id": 3846,
                          "nodeType": "Block",
                          "src": "1840:87:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 3840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 3832,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3796,
                                    "src": "1854:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 3834,
                                  "indexExpression": {
                                    "id": 3833,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3819,
                                    "src": "1861:1:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1854:9:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 3835,
                                    "name": "_HEX_SYMBOLS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3665,
                                    "src": "1866:12:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 3839,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3836,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3788,
                                      "src": "1879:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 3837,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1887:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "1879:11:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1866:25:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "1854:37:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 3841,
                              "nodeType": "ExpressionStatement",
                              "src": "1854:37:29"
                            },
                            {
                              "expression": {
                                "id": 3844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3842,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3788,
                                  "src": "1905:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 3843,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1915:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "1905:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3845,
                              "nodeType": "ExpressionStatement",
                              "src": "1905:11:29"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3826,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3819,
                            "src": "1828:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 3827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1832:1:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1828:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3847,
                        "initializationExpression": {
                          "assignments": [
                            3819
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3819,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1808:1:29",
                              "nodeType": "VariableDeclaration",
                              "scope": 3847,
                              "src": "1800:9:29",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3818,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1800:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3825,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 3820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1812:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 3821,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3790,
                                "src": "1816:6:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1812:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 3823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1825:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1812:14:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1800:26:29"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "1835:3:29",
                            "subExpression": {
                              "id": 3829,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3819,
                              "src": "1837:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3831,
                          "nodeType": "ExpressionStatement",
                          "src": "1835:3:29"
                        },
                        "nodeType": "ForStatement",
                        "src": "1795:132:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3849,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3788,
                                "src": "1944:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1953:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1944:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                              "id": 3852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1956:34:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              },
                              "value": "Strings: hex length insufficient"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                "typeString": "literal_string \"Strings: hex length insufficient\""
                              }
                            ],
                            "id": 3848,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1936:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1936:55:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3854,
                        "nodeType": "ExpressionStatement",
                        "src": "1936:55:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3857,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3796,
                              "src": "2015:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2008:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 3855,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2008:6:29",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2008:14:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3794,
                        "id": 3859,
                        "nodeType": "Return",
                        "src": "2001:21:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3786,
                    "nodeType": "StructuredDocumentation",
                    "src": "1471:112:29",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 3861,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "1597:11:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3791,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3788,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1617:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 3861,
                        "src": "1609:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3787,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1609:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3790,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "1632:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 3861,
                        "src": "1624:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1624:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1608:31:29"
                  },
                  "returnParameters": {
                    "id": 3794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3793,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3861,
                        "src": "1663:13:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3792,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1663:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1662:15:29"
                  },
                  "scope": 3862,
                  "src": "1588:441:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3863,
              "src": "146:1885:29",
              "usedErrors": []
            }
          ],
          "src": "86:1946:29"
        },
        "id": 29
      },
      "wrapped-fcash/contracts/lib/Constants.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/lib/Constants.sol",
          "exportedSymbols": {
            "Constants": [
              3949
            ]
          },
          "id": 3950,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3864,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Constants",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3865,
                "nodeType": "StructuredDocumentation",
                "src": "57:81:30",
                "text": "@title All shared constants for the Notional system should be declared here."
              },
              "fullyImplemented": true,
              "id": 3949,
              "linearizedBaseContracts": [
                3949
              ],
              "name": "Constants",
              "nameLocation": "146:9:30",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3871,
                  "mutability": "constant",
                  "name": "ETH_ADDRESS",
                  "nameLocation": "188:11:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "162:50:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3866,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "162:7:30",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 3869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "210:1:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 3868,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "202:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 3867,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "202:7:30",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "202:10:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3874,
                  "mutability": "constant",
                  "name": "INTERNAL_TOKEN_PRECISION",
                  "nameLocation": "396:24:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "371:55:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3872,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "hexValue": "316538",
                    "id": 3873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "423:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000_by_1",
                      "typeString": "int_const 100000000"
                    },
                    "value": "1e8"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3877,
                  "mutability": "constant",
                  "name": "MAX_TRADED_MARKET_INDEX",
                  "nameLocation": "559:23:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "533:53:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3875,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "533:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "37",
                    "id": 3876,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "585:1:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_7_by_1",
                      "typeString": "int_const 7"
                    },
                    "value": "7"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3880,
                  "mutability": "constant",
                  "name": "DAY",
                  "nameLocation": "712:3:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "686:37:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3836343030",
                    "id": 3879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "718:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3885,
                  "mutability": "constant",
                  "name": "WEEK",
                  "nameLocation": "832:4:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "806:40:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3881,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "806:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3882,
                      "name": "DAY",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3880,
                      "src": "839:3:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "36",
                      "id": 3883,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "845:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_6_by_1",
                        "typeString": "int_const 6"
                      },
                      "value": "6"
                    },
                    "src": "839:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3890,
                  "mutability": "constant",
                  "name": "MONTH",
                  "nameLocation": "878:5:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "852:42:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3887,
                      "name": "WEEK",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3885,
                      "src": "886:4:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "35",
                      "id": 3888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "893:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_5_by_1",
                        "typeString": "int_const 5"
                      },
                      "value": "5"
                    },
                    "src": "886:8:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3895,
                  "mutability": "constant",
                  "name": "QUARTER",
                  "nameLocation": "926:7:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "900:45:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "900:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3892,
                      "name": "MONTH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3890,
                      "src": "936:5:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 3893,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "944:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "936:9:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3900,
                  "mutability": "constant",
                  "name": "YEAR",
                  "nameLocation": "977:4:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "951:44:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3896,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "951:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3897,
                      "name": "QUARTER",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3895,
                      "src": "984:7:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "34",
                      "id": 3898,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "994:1:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "984:11:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3903,
                  "mutability": "constant",
                  "name": "DAYS_IN_WEEK",
                  "nameLocation": "1076:12:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1050:42:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3901,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1050:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "36",
                    "id": 3902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1091:1:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_6_by_1",
                      "typeString": "int_const 6"
                    },
                    "value": "6"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3906,
                  "mutability": "constant",
                  "name": "DAYS_IN_MONTH",
                  "nameLocation": "1124:13:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1098:44:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3904,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1098:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3330",
                    "id": 3905,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1140:2:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_30_by_1",
                      "typeString": "int_const 30"
                    },
                    "value": "30"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3909,
                  "mutability": "constant",
                  "name": "DAYS_IN_QUARTER",
                  "nameLocation": "1174:15:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1148:46:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3907,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1148:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3930",
                    "id": 3908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1192:2:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_90_by_1",
                      "typeString": "int_const 90"
                    },
                    "value": "90"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3912,
                  "mutability": "constant",
                  "name": "MAX_DAY_OFFSET",
                  "nameLocation": "1282:14:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1256:45:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3910,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1256:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3930",
                    "id": 3911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1299:2:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_90_by_1",
                      "typeString": "int_const 90"
                    },
                    "value": "90"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3915,
                  "mutability": "constant",
                  "name": "MAX_WEEK_OFFSET",
                  "nameLocation": "1333:15:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1307:47:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1307:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "333630",
                    "id": 3914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1351:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_360_by_1",
                      "typeString": "int_const 360"
                    },
                    "value": "360"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3918,
                  "mutability": "constant",
                  "name": "MAX_MONTH_OFFSET",
                  "nameLocation": "1386:16:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1360:49:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3916,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1360:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32313630",
                    "id": 3917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1405:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2160_by_1",
                      "typeString": "int_const 2160"
                    },
                    "value": "2160"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3921,
                  "mutability": "constant",
                  "name": "MAX_QUARTER_OFFSET",
                  "nameLocation": "1441:18:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1415:51:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1415:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "37363530",
                    "id": 3920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1462:4:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_7650_by_1",
                      "typeString": "int_const 7650"
                    },
                    "value": "7650"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3924,
                  "mutability": "constant",
                  "name": "WEEK_BIT_OFFSET",
                  "nameLocation": "1554:15:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1528:46:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3922,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1528:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3930",
                    "id": 3923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1572:2:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_90_by_1",
                      "typeString": "int_const 90"
                    },
                    "value": "90"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3927,
                  "mutability": "constant",
                  "name": "MONTH_BIT_OFFSET",
                  "nameLocation": "1606:16:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1580:48:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3925,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1580:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "313335",
                    "id": 3926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1625:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_135_by_1",
                      "typeString": "int_const 135"
                    },
                    "value": "135"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3930,
                  "mutability": "constant",
                  "name": "QUARTER_BIT_OFFSET",
                  "nameLocation": "1660:18:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1634:50:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3928,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1634:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "313935",
                    "id": 3929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1681:3:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_195_by_1",
                      "typeString": "int_const 195"
                    },
                    "value": "195"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3933,
                  "mutability": "constant",
                  "name": "FCASH_ASSET_TYPE",
                  "nameLocation": "1715:16:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1691:44:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3931,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1691:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 3932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1734:1:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3936,
                  "mutability": "constant",
                  "name": "MIN_LIQUIDITY_TOKEN_INDEX",
                  "nameLocation": "1853:25:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1829:53:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3934,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1829:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 3935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1881:1:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3939,
                  "mutability": "constant",
                  "name": "MAX_LIQUIDITY_TOKEN_INDEX",
                  "nameLocation": "1912:25:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1888:53:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3937,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1888:5:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "38",
                    "id": 3938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1940:1:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_8_by_1",
                      "typeString": "int_const 8"
                    },
                    "value": "8"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3942,
                  "mutability": "constant",
                  "name": "UNMASK_FLAGS",
                  "nameLocation": "1973:12:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "1948:46:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 3940,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "value": {
                    "hexValue": "307833464646",
                    "id": 3941,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1988:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16383_by_1",
                      "typeString": "int_const 16383"
                    },
                    "value": "0x3FFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3948,
                  "mutability": "constant",
                  "name": "MAX_CURRENCIES",
                  "nameLocation": "2025:14:30",
                  "nodeType": "VariableDeclaration",
                  "scope": 3949,
                  "src": "2000:62:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 3943,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2000:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "id": 3946,
                        "name": "UNMASK_FLAGS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3942,
                        "src": "2049:12:30",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      ],
                      "id": 3945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2042:6:30",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint16_$",
                        "typeString": "type(uint16)"
                      },
                      "typeName": {
                        "id": 3944,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2042:6:30",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2042:20:30",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "scope": 3950,
              "src": "138:1927:30",
              "usedErrors": []
            }
          ],
          "src": "32:2034:30"
        },
        "id": 30
      },
      "wrapped-fcash/contracts/lib/DateTime.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/lib/DateTime.sol",
          "exportedSymbols": {
            "Constants": [
              3949
            ],
            "DateTime": [
              4373
            ]
          },
          "id": 4374,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3951,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:31"
            },
            {
              "id": 3952,
              "literals": [
                "abicoder",
                "v2"
              ],
              "nodeType": "PragmaDirective",
              "src": "56:19:31"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/Constants.sol",
              "file": "./Constants.sol",
              "id": 3953,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4374,
              "sourceUnit": 3950,
              "src": "77:25:31",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "DateTime",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 4373,
              "linearizedBaseContracts": [
                4373
              ],
              "name": "DateTime",
              "nameLocation": "112:8:31",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3976,
                    "nodeType": "Block",
                    "src": "303:116:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3962,
                                "name": "blockTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3956,
                                "src": "321:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 3963,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "334:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 3964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "QUARTER",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3895,
                                "src": "334:17:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "321:30:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3961,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "313:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "313:39:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3967,
                        "nodeType": "ExpressionStatement",
                        "src": "313:39:31"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3968,
                            "name": "blockTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3956,
                            "src": "369:9:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3969,
                                  "name": "blockTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3956,
                                  "src": "382:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "expression": {
                                    "id": 3970,
                                    "name": "Constants",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3949,
                                    "src": "394:9:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                      "typeString": "type(library Constants)"
                                    }
                                  },
                                  "id": 3971,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "QUARTER",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3895,
                                  "src": "394:17:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "382:29:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3973,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "381:31:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "369:43:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3960,
                        "id": 3975,
                        "nodeType": "Return",
                        "src": "362:50:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3954,
                    "nodeType": "StructuredDocumentation",
                    "src": "128:93:31",
                    "text": "@notice Returns the current reference time which is how all the AMM dates are calculated."
                  },
                  "id": 3977,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReferenceTime",
                  "nameLocation": "235:16:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3956,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "260:9:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 3977,
                        "src": "252:17:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "252:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "251:19:31"
                  },
                  "returnParameters": {
                    "id": 3960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3959,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3977,
                        "src": "294:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3958,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "293:9:31"
                  },
                  "scope": 4373,
                  "src": "226:193:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4000,
                    "nodeType": "Block",
                    "src": "546:93:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3986,
                                "name": "time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3980,
                                "src": "564:4:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 3987,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "572:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 3988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "DAY",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3880,
                                "src": "572:13:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "564:21:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3985,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "556:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "556:30:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3991,
                        "nodeType": "ExpressionStatement",
                        "src": "556:30:31"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3992,
                            "name": "time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3980,
                            "src": "603:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3993,
                                  "name": "time",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3980,
                                  "src": "611:4:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "expression": {
                                    "id": 3994,
                                    "name": "Constants",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3949,
                                    "src": "618:9:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                      "typeString": "type(library Constants)"
                                    }
                                  },
                                  "id": 3995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "DAY",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3880,
                                  "src": "618:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "611:20:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3997,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "610:22:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "603:29:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3984,
                        "id": 3999,
                        "nodeType": "Return",
                        "src": "596:36:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3978,
                    "nodeType": "StructuredDocumentation",
                    "src": "425:49:31",
                    "text": "@notice Truncates a date to midnight UTC time"
                  },
                  "id": 4001,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTimeUTC0",
                  "nameLocation": "488:11:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3981,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3980,
                        "mutability": "mutable",
                        "name": "time",
                        "nameLocation": "508:4:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4001,
                        "src": "500:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3979,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "500:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "499:14:31"
                  },
                  "returnParameters": {
                    "id": 3984,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3983,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4001,
                        "src": "537:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3982,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "537:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "536:9:31"
                  },
                  "scope": 4373,
                  "src": "479:160:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4072,
                    "nodeType": "Block",
                    "src": "896:398:31",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4009,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "910:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 4010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "919:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "910:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4015,
                        "nodeType": "IfStatement",
                        "src": "906:40:31",
                        "trueBody": {
                          "expression": {
                            "expression": {
                              "id": 4012,
                              "name": "Constants",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3949,
                              "src": "929:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                "typeString": "type(library Constants)"
                              }
                            },
                            "id": 4013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "QUARTER",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3895,
                            "src": "929:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4014,
                          "nodeType": "Return",
                          "src": "922:24:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4016,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "960:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 4017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "969:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "960:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4024,
                        "nodeType": "IfStatement",
                        "src": "956:44:31",
                        "trueBody": {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 4019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "979:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "expression": {
                                "id": 4020,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "983:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "QUARTER",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3895,
                              "src": "983:17:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "979:21:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4023,
                          "nodeType": "Return",
                          "src": "972:28:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4025,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "1014:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 4026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1023:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "1014:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4031,
                        "nodeType": "IfStatement",
                        "src": "1010:37:31",
                        "trueBody": {
                          "expression": {
                            "expression": {
                              "id": 4028,
                              "name": "Constants",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3949,
                              "src": "1033:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                "typeString": "type(library Constants)"
                              }
                            },
                            "id": 4029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "YEAR",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3900,
                            "src": "1033:14:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4030,
                          "nodeType": "Return",
                          "src": "1026:21:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4032,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "1061:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "34",
                            "id": 4033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1070:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "1061:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4040,
                        "nodeType": "IfStatement",
                        "src": "1057:41:31",
                        "trueBody": {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4038,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 4035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1080:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "expression": {
                                "id": 4036,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "1084:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "YEAR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3900,
                              "src": "1084:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1080:18:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4039,
                          "nodeType": "Return",
                          "src": "1073:25:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4041,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "1112:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "35",
                            "id": 4042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1121:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "src": "1112:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4049,
                        "nodeType": "IfStatement",
                        "src": "1108:41:31",
                        "trueBody": {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "35",
                              "id": 4044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1131:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "expression": {
                                "id": 4045,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "1135:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "YEAR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3900,
                              "src": "1135:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1131:18:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4048,
                          "nodeType": "Return",
                          "src": "1124:25:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4050,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "1163:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "36",
                            "id": 4051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1172:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "1163:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4058,
                        "nodeType": "IfStatement",
                        "src": "1159:42:31",
                        "trueBody": {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "3130",
                              "id": 4053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1182:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "expression": {
                                "id": 4054,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "1187:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "YEAR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3900,
                              "src": "1187:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1182:19:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4057,
                          "nodeType": "Return",
                          "src": "1175:26:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4059,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4004,
                            "src": "1215:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "37",
                            "id": 4060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1224:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "src": "1215:10:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4067,
                        "nodeType": "IfStatement",
                        "src": "1211:42:31",
                        "trueBody": {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "3230",
                              "id": 4062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1234:2:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "expression": {
                                "id": 4063,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "1239:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "YEAR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3900,
                              "src": "1239:14:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1234:19:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 4008,
                          "id": 4066,
                          "nodeType": "Return",
                          "src": "1227:26:31"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "496e76616c696420696e646578",
                              "id": 4069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1271:15:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60",
                                "typeString": "literal_string \"Invalid index\""
                              },
                              "value": "Invalid index"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60",
                                "typeString": "literal_string \"Invalid index\""
                              }
                            ],
                            "id": 4068,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "1264:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 4070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1264:23:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4071,
                        "nodeType": "ExpressionStatement",
                        "src": "1264:23:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4002,
                    "nodeType": "StructuredDocumentation",
                    "src": "645:174:31",
                    "text": "@notice These are the predetermined market offsets for trading\n @dev Markets are 1-indexed because the 0 index means that no markets are listed for the cash group."
                  },
                  "id": 4073,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTradedMarket",
                  "nameLocation": "833:15:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4005,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4004,
                        "mutability": "mutable",
                        "name": "index",
                        "nameLocation": "857:5:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4073,
                        "src": "849:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4003,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "849:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "848:15:31"
                  },
                  "returnParameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4007,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4073,
                        "src": "887:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "887:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "886:9:31"
                  },
                  "scope": 4373,
                  "src": "824:470:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4117,
                    "nodeType": "Block",
                    "src": "1558:376:31",
                    "statements": [
                      {
                        "assignments": [
                          4086
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4086,
                            "mutability": "mutable",
                            "name": "tRef",
                            "nameLocation": "1576:4:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4117,
                            "src": "1568:12:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4085,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1568:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4091,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4089,
                              "name": "blockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4080,
                              "src": "1609:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 4087,
                              "name": "DateTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4373,
                              "src": "1583:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                "typeString": "type(library DateTime)"
                              }
                            },
                            "id": 4088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReferenceTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3977,
                            "src": "1583:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1583:36:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1568:51:31"
                      },
                      {
                        "assignments": [
                          4093
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4093,
                            "mutability": "mutable",
                            "name": "maxMaturity",
                            "nameLocation": "1637:11:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4117,
                            "src": "1629:19:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4092,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1629:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4100,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4094,
                            "name": "tRef",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4086,
                            "src": "1651:4:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 4097,
                                "name": "maxMarketIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4076,
                                "src": "1683:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 4095,
                                "name": "DateTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4373,
                                "src": "1658:8:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                  "typeString": "type(library DateTime)"
                                }
                              },
                              "id": 4096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getTradedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4073,
                              "src": "1658:24:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1658:40:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1651:47:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1629:69:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4101,
                            "name": "maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4078,
                            "src": "1754:8:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 4102,
                            "name": "maxMaturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4093,
                            "src": "1765:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1754:22:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4106,
                        "nodeType": "IfStatement",
                        "src": "1750:40:31",
                        "trueBody": {
                          "expression": {
                            "hexValue": "66616c7365",
                            "id": 4104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1785:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "functionReturnParameters": 4084,
                          "id": 4105,
                          "nodeType": "Return",
                          "src": "1778:12:31"
                        }
                      },
                      {
                        "assignments": [
                          null,
                          4108
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 4108,
                            "mutability": "mutable",
                            "name": "isValid",
                            "nameLocation": "1841:7:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4117,
                            "src": "1836:12:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4107,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1836:4:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4114,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4111,
                              "name": "blockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4080,
                              "src": "1883:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4112,
                              "name": "maturity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4078,
                              "src": "1894:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 4109,
                              "name": "DateTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4373,
                              "src": "1852:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                "typeString": "type(library DateTime)"
                              }
                            },
                            "id": 4110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBitNumFromMaturity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4372,
                            "src": "1852:30:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                            }
                          },
                          "id": 4113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1852:51:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1828:75:31"
                      },
                      {
                        "expression": {
                          "id": 4115,
                          "name": "isValid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4108,
                          "src": "1920:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4084,
                        "id": 4116,
                        "nodeType": "Return",
                        "src": "1913:14:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4074,
                    "nodeType": "StructuredDocumentation",
                    "src": "1300:108:31",
                    "text": "@notice Determines if an idiosyncratic maturity is valid and returns the bit reference that is the case."
                  },
                  "id": 4118,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidMaturity",
                  "nameLocation": "1422:15:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4076,
                        "mutability": "mutable",
                        "name": "maxMarketIndex",
                        "nameLocation": "1455:14:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4118,
                        "src": "1447:22:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4075,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1447:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4078,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1487:8:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4118,
                        "src": "1479:16:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1479:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4080,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "1513:9:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4118,
                        "src": "1505:17:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1505:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1437:91:31"
                  },
                  "returnParameters": {
                    "id": 4084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4083,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4118,
                        "src": "1552:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4082,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1552:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1551:6:31"
                  },
                  "scope": 4373,
                  "src": "1413:521:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4195,
                    "nodeType": "Block",
                    "src": "2323:669:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4133,
                                "name": "maxMarketIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4121,
                                "src": "2341:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2358:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2341:18:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "43473a206e6f206d61726b657473206c6973746564",
                              "id": 4136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2361:23:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68",
                                "typeString": "literal_string \"CG: no markets listed\""
                              },
                              "value": "CG: no markets listed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_31e4232e1ef91332a355d243fb7df96d94e69e0fc9722e76874c0ce87b926f68",
                                "typeString": "literal_string \"CG: no markets listed\""
                              }
                            ],
                            "id": 4132,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2333:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2333:52:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4138,
                        "nodeType": "ExpressionStatement",
                        "src": "2333:52:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4140,
                                "name": "maxMarketIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4121,
                                "src": "2403:14:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4141,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "2421:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 4142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_TRADED_MARKET_INDEX",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3877,
                                "src": "2421:33:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2403:51:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "43473a206d61726b657420696e64657820626f756e64",
                              "id": 4144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2456:24:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82",
                                "typeString": "literal_string \"CG: market index bound\""
                              },
                              "value": "CG: market index bound"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6f67f7a926836c9e2b728511c663f0508c16865be1492d691caf4fb589451d82",
                                "typeString": "literal_string \"CG: market index bound\""
                              }
                            ],
                            "id": 4139,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2395:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2395:86:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4146,
                        "nodeType": "ExpressionStatement",
                        "src": "2395:86:31"
                      },
                      {
                        "assignments": [
                          4148
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4148,
                            "mutability": "mutable",
                            "name": "tRef",
                            "nameLocation": "2499:4:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4195,
                            "src": "2491:12:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4147,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2491:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4153,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4151,
                              "name": "blockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4125,
                              "src": "2532:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 4149,
                              "name": "DateTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4373,
                              "src": "2506:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                "typeString": "type(library DateTime)"
                              }
                            },
                            "id": 4150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReferenceTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3977,
                            "src": "2506:25:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2506:36:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2491:51:31"
                      },
                      {
                        "body": {
                          "id": 4189,
                          "nodeType": "Block",
                          "src": "2599:347:31",
                          "statements": [
                            {
                              "assignments": [
                                4165
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4165,
                                  "mutability": "mutable",
                                  "name": "marketMaturity",
                                  "nameLocation": "2621:14:31",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4189,
                                  "src": "2613:22:31",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4164,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2613:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4172,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4166,
                                  "name": "tRef",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4148,
                                  "src": "2638:4:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 4169,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4155,
                                      "src": "2670:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4167,
                                      "name": "DateTime",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4373,
                                      "src": "2645:8:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                        "typeString": "type(library DateTime)"
                                      }
                                    },
                                    "id": 4168,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getTradedMarket",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4073,
                                    "src": "2645:24:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2645:27:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2638:34:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2613:59:31"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4173,
                                  "name": "marketMaturity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4165,
                                  "src": "2749:14:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 4174,
                                  "name": "maturity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4123,
                                  "src": "2767:8:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2749:26:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4180,
                              "nodeType": "IfStatement",
                              "src": "2745:49:31",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "id": 4176,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4155,
                                      "src": "2785:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 4177,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2788:5:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "id": 4178,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2784:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                    "typeString": "tuple(uint256,bool)"
                                  }
                                },
                                "functionReturnParameters": 4131,
                                "id": 4179,
                                "nodeType": "Return",
                                "src": "2777:17:31"
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4181,
                                  "name": "marketMaturity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4165,
                                  "src": "2892:14:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 4182,
                                  "name": "maturity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4123,
                                  "src": "2909:8:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2892:25:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4188,
                              "nodeType": "IfStatement",
                              "src": "2888:47:31",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "id": 4184,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4155,
                                      "src": "2927:1:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 4185,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2930:4:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "id": 4186,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2926:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                    "typeString": "tuple(uint256,bool)"
                                  }
                                },
                                "functionReturnParameters": 4131,
                                "id": 4187,
                                "nodeType": "Return",
                                "src": "2919:16:31"
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4158,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4155,
                            "src": "2573:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 4159,
                            "name": "maxMarketIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4121,
                            "src": "2578:14:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2573:19:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4190,
                        "initializationExpression": {
                          "assignments": [
                            4155
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4155,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2566:1:31",
                              "nodeType": "VariableDeclaration",
                              "scope": 4190,
                              "src": "2558:9:31",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4154,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2558:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4157,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 4156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2570:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2558:13:31"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2594:3:31",
                            "subExpression": {
                              "id": 4161,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4155,
                              "src": "2594:1:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4163,
                          "nodeType": "ExpressionStatement",
                          "src": "2594:3:31"
                        },
                        "nodeType": "ForStatement",
                        "src": "2553:393:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "43473a206e6f206d61726b657420666f756e64",
                              "id": 4192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2963:21:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26",
                                "typeString": "literal_string \"CG: no market found\""
                              },
                              "value": "CG: no market found"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_ea29a1c09db2364ef05bd4998b00e47587e5d1a61dc8bb00880df15ce36fda26",
                                "typeString": "literal_string \"CG: no market found\""
                              }
                            ],
                            "id": 4191,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2956:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 4193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2956:29:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4194,
                        "nodeType": "ExpressionStatement",
                        "src": "2956:29:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4119,
                    "nodeType": "StructuredDocumentation",
                    "src": "1940:225:31",
                    "text": "@notice Returns the market index for a given maturity, if the maturity is idiosyncratic\n will return the nearest market index that is larger than the maturity.\n @return uint marketIndex, bool isIdiosyncratic"
                  },
                  "id": 4196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketIndex",
                  "nameLocation": "2179:14:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4121,
                        "mutability": "mutable",
                        "name": "maxMarketIndex",
                        "nameLocation": "2211:14:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "2203:22:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4120,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2203:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4123,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "2243:8:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "2235:16:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2235:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4125,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "2269:9:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "2261:17:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2261:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2193:91:31"
                  },
                  "returnParameters": {
                    "id": 4131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4128,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "2308:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2308:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4130,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4196,
                        "src": "2317:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4129,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2317:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2307:15:31"
                  },
                  "scope": 4373,
                  "src": "2170:822:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4371,
                    "nodeType": "Block",
                    "src": "3342:2565:31",
                    "statements": [
                      {
                        "assignments": [
                          4209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4209,
                            "mutability": "mutable",
                            "name": "blockTimeUTC0",
                            "nameLocation": "3360:13:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4371,
                            "src": "3352:21:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4208,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3352:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4213,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4211,
                              "name": "blockTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4199,
                              "src": "3388:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4210,
                            "name": "getTimeUTC0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4001,
                            "src": "3376:11:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3376:22:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3352:46:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4214,
                              "name": "maturity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4201,
                              "src": "3466:8:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "expression": {
                                "id": 4215,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "3477:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "DAY",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3880,
                              "src": "3477:13:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3466:24:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3494:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3466:29:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4224,
                        "nodeType": "IfStatement",
                        "src": "3462:52:31",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "30",
                                "id": 4220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3505:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 4221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3508:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "id": 4222,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3504:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_bool_$",
                              "typeString": "tuple(int_const 0,bool)"
                            }
                          },
                          "functionReturnParameters": 4207,
                          "id": 4223,
                          "nodeType": "Return",
                          "src": "3497:17:31"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4225,
                            "name": "blockTimeUTC0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4209,
                            "src": "3570:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 4226,
                            "name": "maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4201,
                            "src": "3587:8:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3570:25:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4232,
                        "nodeType": "IfStatement",
                        "src": "3566:48:31",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "30",
                                "id": 4228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3605:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 4229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3608:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "id": 4230,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3604:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_bool_$",
                              "typeString": "tuple(int_const 0,bool)"
                            }
                          },
                          "functionReturnParameters": 4207,
                          "id": 4231,
                          "nodeType": "Return",
                          "src": "3597:17:31"
                        }
                      },
                      {
                        "assignments": [
                          4234
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4234,
                            "mutability": "mutable",
                            "name": "daysOffset",
                            "nameLocation": "3725:10:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 4371,
                            "src": "3717:18:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4233,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3717:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4242,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4235,
                                  "name": "maturity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4201,
                                  "src": "3739:8:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 4236,
                                  "name": "blockTimeUTC0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4209,
                                  "src": "3750:13:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3739:24:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 4238,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3738:26:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "expression": {
                              "id": 4239,
                              "name": "Constants",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3949,
                              "src": "3767:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                "typeString": "type(library Constants)"
                              }
                            },
                            "id": 4240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "DAY",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3880,
                            "src": "3767:13:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3738:42:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3717:63:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4243,
                            "name": "daysOffset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4234,
                            "src": "3863:10:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "expression": {
                              "id": 4244,
                              "name": "Constants",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3949,
                              "src": "3877:9:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                "typeString": "type(library Constants)"
                              }
                            },
                            "id": 4245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "MAX_DAY_OFFSET",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3912,
                            "src": "3877:24:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3863:38:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4252,
                              "name": "daysOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4234,
                              "src": "3963:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "expression": {
                                "id": 4253,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "3977:9:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 4254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_WEEK_OFFSET",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3915,
                              "src": "3977:25:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3963:39:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4289,
                                "name": "daysOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4234,
                                "src": "4845:10:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4290,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "4859:9:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 4291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_MONTH_OFFSET",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3918,
                                "src": "4859:26:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4845:40:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4326,
                                  "name": "daysOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4234,
                                  "src": "5295:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "id": 4327,
                                    "name": "Constants",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3949,
                                    "src": "5309:9:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                      "typeString": "type(library Constants)"
                                    }
                                  },
                                  "id": 4328,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "MAX_QUARTER_OFFSET",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3921,
                                  "src": "5309:28:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5295:42:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4363,
                              "nodeType": "IfStatement",
                              "src": "5291:455:31",
                              "trueBody": {
                                "id": 4362,
                                "nodeType": "Block",
                                "src": "5339:407:31",
                                "statements": [
                                  {
                                    "assignments": [
                                      4331
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4331,
                                        "mutability": "mutable",
                                        "name": "offsetInDays",
                                        "nameLocation": "5361:12:31",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 4362,
                                        "src": "5353:20:31",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4330,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5353:7:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4345,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4335,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4332,
                                          "name": "daysOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4234,
                                          "src": "5392:10:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 4333,
                                            "name": "Constants",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3949,
                                            "src": "5425:9:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                              "typeString": "type(library Constants)"
                                            }
                                          },
                                          "id": 4334,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "MAX_MONTH_OFFSET",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3918,
                                          "src": "5425:26:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "5392:59:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4343,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4339,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4336,
                                                "name": "blockTimeUTC0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4209,
                                                "src": "5475:13:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "expression": {
                                                  "id": 4337,
                                                  "name": "Constants",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3949,
                                                  "src": "5491:9:31",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                    "typeString": "type(library Constants)"
                                                  }
                                                },
                                                "id": 4338,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "QUARTER",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3895,
                                                "src": "5491:17:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "5475:33:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 4340,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5474:35:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 4341,
                                            "name": "Constants",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3949,
                                            "src": "5532:9:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                              "typeString": "type(library Constants)"
                                            }
                                          },
                                          "id": 4342,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "DAY",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3880,
                                          "src": "5532:13:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "5474:71:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5392:153:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5353:192:31"
                                  },
                                  {
                                    "expression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4352,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 4346,
                                              "name": "Constants",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3949,
                                              "src": "5585:9:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                "typeString": "type(library Constants)"
                                              }
                                            },
                                            "id": 4347,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "QUARTER_BIT_OFFSET",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3930,
                                            "src": "5585:28:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4351,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4348,
                                              "name": "offsetInDays",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4331,
                                              "src": "5616:12:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "expression": {
                                                "id": 4349,
                                                "name": "Constants",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3949,
                                                "src": "5631:9:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                  "typeString": "type(library Constants)"
                                                }
                                              },
                                              "id": 4350,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "DAYS_IN_QUARTER",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3909,
                                              "src": "5631:25:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5616:40:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5585:71:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4359,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 4356,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 4353,
                                                  "name": "offsetInDays",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4331,
                                                  "src": "5675:12:31",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "%",
                                                "rightExpression": {
                                                  "expression": {
                                                    "id": 4354,
                                                    "name": "Constants",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3949,
                                                    "src": "5690:9:31",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                      "typeString": "type(library Constants)"
                                                    }
                                                  },
                                                  "id": 4355,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "DAYS_IN_QUARTER",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3909,
                                                  "src": "5690:25:31",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "5675:40:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 4357,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "5674:42:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 4358,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5720:1:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "5674:47:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 4360,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "5567:168:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "functionReturnParameters": 4207,
                                    "id": 4361,
                                    "nodeType": "Return",
                                    "src": "5560:175:31"
                                  }
                                ]
                              }
                            },
                            "id": 4364,
                            "nodeType": "IfStatement",
                            "src": "4841:905:31",
                            "trueBody": {
                              "id": 4325,
                              "nodeType": "Block",
                              "src": "4887:398:31",
                              "statements": [
                                {
                                  "assignments": [
                                    4294
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4294,
                                      "mutability": "mutable",
                                      "name": "offsetInDays",
                                      "nameLocation": "4909:12:31",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4325,
                                      "src": "4901:20:31",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 4293,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4901:7:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4308,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4298,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4295,
                                        "name": "daysOffset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4234,
                                        "src": "4940:10:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 4296,
                                          "name": "Constants",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3949,
                                          "src": "4973:9:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                            "typeString": "type(library Constants)"
                                          }
                                        },
                                        "id": 4297,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "MAX_WEEK_OFFSET",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3915,
                                        "src": "4973:25:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4940:58:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4306,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4302,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4299,
                                              "name": "blockTimeUTC0",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4209,
                                              "src": "5022:13:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "%",
                                            "rightExpression": {
                                              "expression": {
                                                "id": 4300,
                                                "name": "Constants",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3949,
                                                "src": "5038:9:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                  "typeString": "type(library Constants)"
                                                }
                                              },
                                              "id": 4301,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "MONTH",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3890,
                                              "src": "5038:15:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5022:31:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 4303,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "5021:33:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 4304,
                                          "name": "Constants",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3949,
                                          "src": "5077:9:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                            "typeString": "type(library Constants)"
                                          }
                                        },
                                        "id": 4305,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "DAY",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3880,
                                        "src": "5077:13:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5021:69:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4940:150:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "4901:189:31"
                                },
                                {
                                  "expression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4315,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 4309,
                                            "name": "Constants",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3949,
                                            "src": "5130:9:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                              "typeString": "type(library Constants)"
                                            }
                                          },
                                          "id": 4310,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "MONTH_BIT_OFFSET",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3927,
                                          "src": "5130:26:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4314,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4311,
                                            "name": "offsetInDays",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294,
                                            "src": "5159:12:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 4312,
                                              "name": "Constants",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3949,
                                              "src": "5174:9:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                "typeString": "type(library Constants)"
                                              }
                                            },
                                            "id": 4313,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "DAYS_IN_MONTH",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3906,
                                            "src": "5174:23:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5159:38:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "5130:67:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4322,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4319,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4316,
                                                "name": "offsetInDays",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294,
                                                "src": "5216:12:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "expression": {
                                                  "id": 4317,
                                                  "name": "Constants",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3949,
                                                  "src": "5231:9:31",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                    "typeString": "type(library Constants)"
                                                  }
                                                },
                                                "id": 4318,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "DAYS_IN_MONTH",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3906,
                                                "src": "5231:23:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "5216:38:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 4320,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5215:40:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 4321,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5259:1:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "5215:45:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 4323,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "5112:162:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                      "typeString": "tuple(uint256,bool)"
                                    }
                                  },
                                  "functionReturnParameters": 4207,
                                  "id": 4324,
                                  "nodeType": "Return",
                                  "src": "5105:169:31"
                                }
                              ]
                            }
                          },
                          "id": 4365,
                          "nodeType": "IfStatement",
                          "src": "3959:1787:31",
                          "trueBody": {
                            "id": 4288,
                            "nodeType": "Block",
                            "src": "4004:831:31",
                            "statements": [
                              {
                                "assignments": [
                                  4257
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 4257,
                                    "mutability": "mutable",
                                    "name": "offsetInDays",
                                    "nameLocation": "4283:12:31",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4288,
                                    "src": "4275:20:31",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4256,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4275:7:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 4271,
                                "initialValue": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4261,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4258,
                                      "name": "daysOffset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4234,
                                      "src": "4314:10:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 4259,
                                        "name": "Constants",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3949,
                                        "src": "4347:9:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                          "typeString": "type(library Constants)"
                                        }
                                      },
                                      "id": 4260,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "MAX_DAY_OFFSET",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3912,
                                      "src": "4347:24:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4314:57:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4269,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4265,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4262,
                                            "name": "blockTimeUTC0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4209,
                                            "src": "4395:13:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "%",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 4263,
                                              "name": "Constants",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3949,
                                              "src": "4411:9:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                "typeString": "type(library Constants)"
                                              }
                                            },
                                            "id": 4264,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "WEEK",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3885,
                                            "src": "4411:14:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4395:30:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4266,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "4394:32:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 4267,
                                        "name": "Constants",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3949,
                                        "src": "4449:9:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                          "typeString": "type(library Constants)"
                                        }
                                      },
                                      "id": 4268,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "DAY",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3880,
                                      "src": "4449:13:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4394:68:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4314:148:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "4275:187:31"
                              },
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4278,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 4272,
                                          "name": "Constants",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3949,
                                          "src": "4683:9:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                            "typeString": "type(library Constants)"
                                          }
                                        },
                                        "id": 4273,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "WEEK_BIT_OFFSET",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3924,
                                        "src": "4683:25:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4277,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4274,
                                          "name": "offsetInDays",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4257,
                                          "src": "4711:12:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 4275,
                                            "name": "Constants",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3949,
                                            "src": "4726:9:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                              "typeString": "type(library Constants)"
                                            }
                                          },
                                          "id": 4276,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "DAYS_IN_WEEK",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3903,
                                          "src": "4726:22:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4711:37:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4683:65:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4285,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4282,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4279,
                                              "name": "offsetInDays",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4257,
                                              "src": "4767:12:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "%",
                                            "rightExpression": {
                                              "expression": {
                                                "id": 4280,
                                                "name": "Constants",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3949,
                                                "src": "4782:9:31",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                                  "typeString": "type(library Constants)"
                                                }
                                              },
                                              "id": 4281,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "DAYS_IN_WEEK",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3903,
                                              "src": "4782:22:31",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4767:37:31",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 4283,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4766:39:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 4284,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4809:1:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4766:44:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 4286,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4496:328:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                    "typeString": "tuple(uint256,bool)"
                                  }
                                },
                                "functionReturnParameters": 4207,
                                "id": 4287,
                                "nodeType": "Return",
                                "src": "4489:335:31"
                              }
                            ]
                          }
                        },
                        "id": 4366,
                        "nodeType": "IfStatement",
                        "src": "3859:1887:31",
                        "trueBody": {
                          "id": 4251,
                          "nodeType": "Block",
                          "src": "3903:50:31",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 4247,
                                    "name": "daysOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4234,
                                    "src": "3925:10:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 4248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3937:4:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "id": 4249,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3924:18:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                  "typeString": "tuple(uint256,bool)"
                                }
                              },
                              "functionReturnParameters": 4207,
                              "id": 4250,
                              "nodeType": "Return",
                              "src": "3917:25:31"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "323536",
                              "id": 4367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5889:3:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_256_by_1",
                                "typeString": "int_const 256"
                              },
                              "value": "256"
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 4368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5894:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "id": 4369,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5888:12:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_256_by_1_$_t_bool_$",
                            "typeString": "tuple(int_const 256,bool)"
                          }
                        },
                        "functionReturnParameters": 4207,
                        "id": 4370,
                        "nodeType": "Return",
                        "src": "5881:19:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4197,
                    "nodeType": "StructuredDocumentation",
                    "src": "2998:205:31",
                    "text": "@notice Given a bit number and the reference time of the first bit, returns the bit number\n of a given maturity.\n @return bitNum and a true or false if the maturity falls on the exact bit"
                  },
                  "id": 4372,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBitNumFromMaturity",
                  "nameLocation": "3217:21:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4199,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "3247:9:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4372,
                        "src": "3239:17:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4198,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3239:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4201,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "3266:8:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4372,
                        "src": "3258:16:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4200,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3258:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3238:37:31"
                  },
                  "returnParameters": {
                    "id": 4207,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4204,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4372,
                        "src": "3323:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4203,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3323:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4206,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4372,
                        "src": "3332:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4205,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3332:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3322:15:31"
                  },
                  "scope": 4373,
                  "src": "3208:2699:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4374,
              "src": "104:5805:31",
              "usedErrors": []
            }
          ],
          "src": "32:5878:31"
        },
        "id": 31
      },
      "wrapped-fcash/contracts/lib/EncodeDecode.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/lib/EncodeDecode.sol",
          "exportedSymbols": {
            "AccountBalance": [
              4951
            ],
            "AccountContext": [
              4940
            ],
            "AssetRateParameters": [
              4958
            ],
            "AssetStorageState": [
              4853
            ],
            "BalanceActionWithTrades": [
              4878
            ],
            "BatchLend": [
              4861
            ],
            "CashGroupSettings": [
              4929
            ],
            "Constants": [
              3949
            ],
            "DepositActionType": [
              4849
            ],
            "EncodeDecode": [
              4826
            ],
            "PortfolioAsset": [
              4904
            ],
            "Token": [
              4890
            ],
            "TokenType": [
              4834
            ],
            "TradeActionType": [
              4841
            ]
          },
          "id": 4827,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4375,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:32"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/Constants.sol",
              "file": "./Constants.sol",
              "id": 4376,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4827,
              "sourceUnit": 3950,
              "src": "57:25:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/Types.sol",
              "file": "./Types.sol",
              "id": 4377,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4827,
              "sourceUnit": 4959,
              "src": "83:21:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "EncodeDecode",
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 4826,
              "linearizedBaseContracts": [
                4826
              ],
              "name": "EncodeDecode",
              "nameLocation": "114:12:32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4414,
                    "nodeType": "Block",
                    "src": "355:113:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 4394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4389,
                            "name": "assetType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4387,
                            "src": "365:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4392,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4380,
                                "src": "383:2:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "377:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 4390,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "377:5:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "377:9:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "365:21:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 4395,
                        "nodeType": "ExpressionStatement",
                        "src": "365:21:32"
                      },
                      {
                        "expression": {
                          "id": 4403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4396,
                            "name": "maturity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4385,
                            "src": "396:8:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4399,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4380,
                                  "src": "414:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "38",
                                  "id": 4400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "420:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "414:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "407:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint40_$",
                                "typeString": "type(uint40)"
                              },
                              "typeName": {
                                "id": 4397,
                                "name": "uint40",
                                "nodeType": "ElementaryTypeName",
                                "src": "407:6:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "407:15:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "396:26:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 4404,
                        "nodeType": "ExpressionStatement",
                        "src": "396:26:32"
                      },
                      {
                        "expression": {
                          "id": 4412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4405,
                            "name": "currencyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4383,
                            "src": "432:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4408,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4380,
                                  "src": "452:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "3438",
                                  "id": 4409,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "458:2:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_48_by_1",
                                    "typeString": "int_const 48"
                                  },
                                  "value": "48"
                                },
                                "src": "452:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "445:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              },
                              "typeName": {
                                "id": 4406,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "445:6:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "445:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "432:29:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 4413,
                        "nodeType": "ExpressionStatement",
                        "src": "432:29:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4378,
                    "nodeType": "StructuredDocumentation",
                    "src": "134:29:32",
                    "text": "@notice Decodes asset ids"
                  },
                  "id": 4415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decodeERC1155Id",
                  "nameLocation": "177:15:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4380,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "201:2:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4415,
                        "src": "193:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4379,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "193:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "192:12:32"
                  },
                  "returnParameters": {
                    "id": 4388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4383,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "272:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4415,
                        "src": "265:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4382,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "265:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4385,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "303:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4415,
                        "src": "296:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 4384,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "296:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4387,
                        "mutability": "mutable",
                        "name": "assetType",
                        "nameLocation": "331:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4415,
                        "src": "325:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4386,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "325:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "251:99:32"
                  },
                  "scope": 4826,
                  "src": "168:300:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4493,
                    "nodeType": "Block",
                    "src": "652:404:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4428,
                                "name": "currencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4418,
                                "src": "670:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4429,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "684:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 4430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_CURRENCIES",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3948,
                                "src": "684:24:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "src": "670:38:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4427,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "662:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "662:47:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4433,
                        "nodeType": "ExpressionStatement",
                        "src": "662:47:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4435,
                                "name": "maturity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4420,
                                "src": "727:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 4438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "744:6:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint40_$",
                                        "typeString": "type(uint40)"
                                      },
                                      "typeName": {
                                        "id": 4437,
                                        "name": "uint40",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "744:6:32",
                                        "typeDescriptions": {}
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint40_$",
                                        "typeString": "type(uint40)"
                                      }
                                    ],
                                    "id": 4436,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "739:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 4439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "739:12:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint40",
                                    "typeString": "type(uint40)"
                                  }
                                },
                                "id": 4440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "src": "739:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              "src": "727:28:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4434,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "719:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "719:37:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4443,
                        "nodeType": "ExpressionStatement",
                        "src": "719:37:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4445,
                                "name": "assetType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4422,
                                "src": "774:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4446,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "787:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 4447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_LIQUIDITY_TOKEN_INDEX",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3939,
                                "src": "787:35:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "774:48:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4444,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "766:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "766:57:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4450,
                        "nodeType": "ExpressionStatement",
                        "src": "766:57:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 4490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 4479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 4464,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 4459,
                                                    "name": "currencyId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4418,
                                                    "src": "902:10:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 4458,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "895:6:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint16_$",
                                                    "typeString": "type(uint16)"
                                                  },
                                                  "typeName": {
                                                    "id": 4457,
                                                    "name": "uint16",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "895:6:32",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 4460,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "895:18:32",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint16",
                                                  "typeString": "uint16"
                                                }
                                              ],
                                              "id": 4456,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "887:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4455,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "887:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4461,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "887:27:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4454,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "879:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 4453,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "879:7:32",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4462,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "879:36:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "3438",
                                        "id": 4463,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "919:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_48_by_1",
                                          "typeString": "int_const 48"
                                        },
                                        "value": "48"
                                      },
                                      "src": "879:42:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "id": 4465,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "878:44:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 4477,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 4472,
                                                    "name": "maturity",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4420,
                                                    "src": "965:8:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 4471,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "958:6:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint40_$",
                                                    "typeString": "type(uint40)"
                                                  },
                                                  "typeName": {
                                                    "id": 4470,
                                                    "name": "uint40",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "958:6:32",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 4473,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "958:16:32",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint40",
                                                  "typeString": "uint40"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint40",
                                                  "typeString": "uint40"
                                                }
                                              ],
                                              "id": 4469,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "950:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4468,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "950:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4474,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "950:25:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4467,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "942:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 4466,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "942:7:32",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "942:34:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "38",
                                        "id": 4476,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "980:1:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "8"
                                      },
                                      "src": "942:39:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "id": 4478,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "941:41:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "878:104:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 4486,
                                            "name": "assetType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4422,
                                            "src": "1023:9:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4485,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1017:5:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          },
                                          "typeName": {
                                            "id": 4484,
                                            "name": "uint8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1017:5:32",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4487,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1017:16:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 4483,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1009:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4482,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1009:7:32",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4488,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1009:25:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1001:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 4480,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1001:7:32",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1001:34:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "878:157:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "853:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 4451,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "853:7:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "853:196:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4426,
                        "id": 4492,
                        "nodeType": "Return",
                        "src": "834:215:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4416,
                    "nodeType": "StructuredDocumentation",
                    "src": "474:29:32",
                    "text": "@notice Encodes asset ids"
                  },
                  "id": 4494,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "encodeERC1155Id",
                  "nameLocation": "517:15:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4418,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "550:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4494,
                        "src": "542:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4417,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "542:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4420,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "578:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4494,
                        "src": "570:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4419,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "570:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4422,
                        "mutability": "mutable",
                        "name": "assetType",
                        "nameLocation": "604:9:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4494,
                        "src": "596:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4421,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "532:87:32"
                  },
                  "returnParameters": {
                    "id": 4426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4425,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4494,
                        "src": "643:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "643:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "642:9:32"
                  },
                  "scope": 4826,
                  "src": "508:548:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4591,
                    "nodeType": "Block",
                    "src": "1284:428:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 4518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4511,
                            "name": "action",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4509,
                            "src": "1294:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BatchLend memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 4516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1319:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1303:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct BatchLend memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 4513,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 4512,
                                    "name": "BatchLend",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 4861,
                                    "src": "1307:9:32"
                                  },
                                  "referencedDeclaration": 4861,
                                  "src": "1307:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BatchLend_$4861_storage_ptr",
                                    "typeString": "struct BatchLend"
                                  }
                                },
                                "id": 4514,
                                "nodeType": "ArrayTypeName",
                                "src": "1307:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_storage_$dyn_storage_ptr",
                                  "typeString": "struct BatchLend[]"
                                }
                              }
                            },
                            "id": 4517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1303:18:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BatchLend memory[] memory"
                            }
                          },
                          "src": "1294:27:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct BatchLend memory[] memory"
                          }
                        },
                        "id": 4519,
                        "nodeType": "ExpressionStatement",
                        "src": "1294:27:32"
                      },
                      {
                        "expression": {
                          "id": 4525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4520,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "1331:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BatchLend memory[] memory"
                                }
                              },
                              "id": 4522,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1338:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1331:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BatchLend_$4861_memory_ptr",
                                "typeString": "struct BatchLend memory"
                              }
                            },
                            "id": 4523,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currencyId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4855,
                            "src": "1331:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4524,
                            "name": "currencyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4496,
                            "src": "1354:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "1331:33:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 4526,
                        "nodeType": "ExpressionStatement",
                        "src": "1331:33:32"
                      },
                      {
                        "expression": {
                          "id": 4532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4527,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "1374:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BatchLend memory[] memory"
                                }
                              },
                              "id": 4529,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1381:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1374:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BatchLend_$4861_memory_ptr",
                                "typeString": "struct BatchLend memory"
                              }
                            },
                            "id": 4530,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "depositUnderlying",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4857,
                            "src": "1374:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4531,
                            "name": "useUnderlying",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4504,
                            "src": "1404:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1374:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4533,
                        "nodeType": "ExpressionStatement",
                        "src": "1374:43:32"
                      },
                      {
                        "expression": {
                          "id": 4543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4534,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4509,
                                "src": "1427:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BatchLend memory[] memory"
                                }
                              },
                              "id": 4536,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1434:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1427:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BatchLend_$4861_memory_ptr",
                                "typeString": "struct BatchLend memory"
                              }
                            },
                            "id": 4537,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "trades",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4860,
                            "src": "1427:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 4541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1460:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1446:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 4538,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1450:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 4539,
                                "nodeType": "ArrayTypeName",
                                "src": "1450:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 4542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1446:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "1427:35:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 4544,
                        "nodeType": "ExpressionStatement",
                        "src": "1427:35:32"
                      },
                      {
                        "expression": {
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 4545,
                                  "name": "action",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4509,
                                  "src": "1472:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct BatchLend memory[] memory"
                                  }
                                },
                                "id": 4547,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4546,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1479:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1472:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BatchLend_$4861_memory_ptr",
                                  "typeString": "struct BatchLend memory"
                                }
                              },
                              "id": 4548,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "trades",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4860,
                              "src": "1472:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 4550,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1489:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1472:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4579,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4562,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "expression": {
                                                      "id": 4557,
                                                      "name": "TradeActionType",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4841,
                                                      "src": "1530:15:32",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_TradeActionType_$4841_$",
                                                        "typeString": "type(enum TradeActionType)"
                                                      }
                                                    },
                                                    "id": 4558,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Lend",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4835,
                                                    "src": "1530:20:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_TradeActionType_$4841",
                                                      "typeString": "enum TradeActionType"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_enum$_TradeActionType_$4841",
                                                      "typeString": "enum TradeActionType"
                                                    }
                                                  ],
                                                  "id": 4556,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1524:5:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                    "typeString": "type(uint8)"
                                                  },
                                                  "typeName": {
                                                    "id": 4555,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1524:5:32",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 4559,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1524:27:32",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 4554,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1516:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4553,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1516:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4560,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1516:36:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "323438",
                                            "id": 4561,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1556:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_248_by_1",
                                              "typeString": "int_const 248"
                                            },
                                            "value": "248"
                                          },
                                          "src": "1516:43:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4563,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1515:45:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4569,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "id": 4566,
                                                "name": "marketIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4498,
                                                "src": "1584:11:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 4565,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1576:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4564,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1576:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4567,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1576:20:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "323430",
                                            "id": 4568,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1600:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_240_by_1",
                                              "typeString": "int_const 240"
                                            },
                                            "value": "240"
                                          },
                                          "src": "1576:27:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4570,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1575:29:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1515:89:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4577,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 4574,
                                              "name": "fCashAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4500,
                                              "src": "1628:11:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint88",
                                                "typeString": "uint88"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint88",
                                                "typeString": "uint88"
                                              }
                                            ],
                                            "id": 4573,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1620:7:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 4572,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1620:7:32",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4575,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1620:20:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "hexValue": "313532",
                                          "id": 4576,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1644:3:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_152_by_1",
                                            "typeString": "int_const 152"
                                          },
                                          "value": "152"
                                        },
                                        "src": "1620:27:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4578,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1619:29:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1515:133:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4585,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 4582,
                                            "name": "minImpliedRate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4502,
                                            "src": "1672:14:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          ],
                                          "id": 4581,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1664:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 4580,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1664:7:32",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4583,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1664:23:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313230",
                                        "id": 4584,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1691:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_120_by_1",
                                          "typeString": "int_const 120"
                                        },
                                        "value": "120"
                                      },
                                      "src": "1664:30:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4586,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1663:32:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1515:180:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1494:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4551,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1494:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1494:211:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1472:233:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 4590,
                        "nodeType": "ExpressionStatement",
                        "src": "1472:233:32"
                      }
                    ]
                  },
                  "id": 4592,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "encodeLendTrade",
                  "nameLocation": "1071:15:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4496,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1103:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "1096:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4495,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1096:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4498,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "1129:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "1123:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4497,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1123:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4500,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "1157:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "1150:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 4499,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "1150:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4502,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "1185:14:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "1178:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4501,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1178:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4504,
                        "mutability": "mutable",
                        "name": "useUnderlying",
                        "nameLocation": "1214:13:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "1209:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4503,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1209:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1086:147:32"
                  },
                  "returnParameters": {
                    "id": 4510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4509,
                        "mutability": "mutable",
                        "name": "action",
                        "nameLocation": "1276:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4592,
                        "src": "1257:25:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct BatchLend[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4507,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4506,
                              "name": "BatchLend",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4861,
                              "src": "1257:9:32"
                            },
                            "referencedDeclaration": 4861,
                            "src": "1257:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BatchLend_$4861_storage_ptr",
                              "typeString": "struct BatchLend"
                            }
                          },
                          "id": 4508,
                          "nodeType": "ArrayTypeName",
                          "src": "1257:11:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_storage_$dyn_storage_ptr",
                            "typeString": "struct BatchLend[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1256:27:32"
                  },
                  "scope": 4826,
                  "src": "1062:650:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4711,
                    "nodeType": "Block",
                    "src": "1968:617:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 4616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4609,
                            "name": "action",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4607,
                            "src": "1978:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BalanceActionWithTrades memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 4614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2017:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1987:29:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct BalanceActionWithTrades memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 4611,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 4610,
                                    "name": "BalanceActionWithTrades",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 4878,
                                    "src": "1991:23:32"
                                  },
                                  "referencedDeclaration": 4878,
                                  "src": "1991:23:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                                    "typeString": "struct BalanceActionWithTrades"
                                  }
                                },
                                "id": 4612,
                                "nodeType": "ArrayTypeName",
                                "src": "1991:25:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                                  "typeString": "struct BalanceActionWithTrades[]"
                                }
                              }
                            },
                            "id": 4615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1987:32:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BalanceActionWithTrades memory[] memory"
                            }
                          },
                          "src": "1978:41:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct BalanceActionWithTrades memory[] memory"
                          }
                        },
                        "id": 4617,
                        "nodeType": "ExpressionStatement",
                        "src": "1978:41:32"
                      },
                      {
                        "expression": {
                          "id": 4624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4618,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4607,
                                "src": "2029:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4620,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2036:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2029:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4621,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "actionType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4864,
                            "src": "2029:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_DepositActionType_$4849",
                              "typeString": "enum DepositActionType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 4622,
                              "name": "DepositActionType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4849,
                              "src": "2052:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_DepositActionType_$4849_$",
                                "typeString": "type(enum DepositActionType)"
                              }
                            },
                            "id": 4623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "DepositUnderlying",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4844,
                            "src": "2052:35:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_DepositActionType_$4849",
                              "typeString": "enum DepositActionType"
                            }
                          },
                          "src": "2029:58:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_DepositActionType_$4849",
                            "typeString": "enum DepositActionType"
                          }
                        },
                        "id": 4625,
                        "nodeType": "ExpressionStatement",
                        "src": "2029:58:32"
                      },
                      {
                        "expression": {
                          "id": 4631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4626,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4607,
                                "src": "2097:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4628,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2104:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2097:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4629,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currencyId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4866,
                            "src": "2097:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4630,
                            "name": "currencyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4594,
                            "src": "2120:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "2097:33:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 4632,
                        "nodeType": "ExpressionStatement",
                        "src": "2097:33:32"
                      },
                      {
                        "expression": {
                          "id": 4638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4633,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4607,
                                "src": "2140:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4635,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2147:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2140:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4636,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "depositActionAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4868,
                            "src": "2140:29:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4637,
                            "name": "depositAmountExternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4598,
                            "src": "2172:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2140:53:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4639,
                        "nodeType": "ExpressionStatement",
                        "src": "2140:53:32"
                      },
                      {
                        "expression": {
                          "id": 4645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4640,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4607,
                                "src": "2203:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4642,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2210:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2203:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4643,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "withdrawEntireCashBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4872,
                            "src": "2203:35:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2241:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2203:42:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4646,
                        "nodeType": "ExpressionStatement",
                        "src": "2203:42:32"
                      },
                      {
                        "expression": {
                          "id": 4652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4647,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4607,
                                "src": "2255:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4649,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2262:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2255:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4650,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "redeemToUnderlying",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4874,
                            "src": "2255:28:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2286:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2255:35:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4653,
                        "nodeType": "ExpressionStatement",
                        "src": "2255:35:32"
                      },
                      {
                        "expression": {
                          "id": 4663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4654,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4607,
                                "src": "2300:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4656,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2307:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2300:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4657,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "trades",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4877,
                            "src": "2300:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 4661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2333:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "2319:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 4658,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2323:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 4659,
                                "nodeType": "ArrayTypeName",
                                "src": "2323:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 4662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2319:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "2300:35:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 4664,
                        "nodeType": "ExpressionStatement",
                        "src": "2300:35:32"
                      },
                      {
                        "expression": {
                          "id": 4709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 4665,
                                  "name": "action",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4607,
                                  "src": "2345:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct BalanceActionWithTrades memory[] memory"
                                  }
                                },
                                "id": 4667,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4666,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2352:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2345:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory"
                                }
                              },
                              "id": 4668,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "trades",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "2345:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 4670,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2362:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2345:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4691,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4682,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "expression": {
                                                      "id": 4677,
                                                      "name": "TradeActionType",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4841,
                                                      "src": "2403:15:32",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_TradeActionType_$4841_$",
                                                        "typeString": "type(enum TradeActionType)"
                                                      }
                                                    },
                                                    "id": 4678,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Lend",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4835,
                                                    "src": "2403:20:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_TradeActionType_$4841",
                                                      "typeString": "enum TradeActionType"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_enum$_TradeActionType_$4841",
                                                      "typeString": "enum TradeActionType"
                                                    }
                                                  ],
                                                  "id": 4676,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "2397:5:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                    "typeString": "type(uint8)"
                                                  },
                                                  "typeName": {
                                                    "id": 4675,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2397:5:32",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 4679,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2397:27:32",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 4674,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "2389:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4673,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2389:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4680,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2389:36:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "323438",
                                            "id": 4681,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2429:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_248_by_1",
                                              "typeString": "int_const 248"
                                            },
                                            "value": "248"
                                          },
                                          "src": "2389:43:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4683,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2388:45:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4689,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "id": 4686,
                                                "name": "marketIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4596,
                                                "src": "2457:11:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 4685,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "2449:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4684,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2449:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4687,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2449:20:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "323430",
                                            "id": 4688,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2473:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_240_by_1",
                                              "typeString": "int_const 240"
                                            },
                                            "value": "240"
                                          },
                                          "src": "2449:27:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4690,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2448:29:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2388:89:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4697,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 4694,
                                              "name": "fCashAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4600,
                                              "src": "2501:11:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint88",
                                                "typeString": "uint88"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint88",
                                                "typeString": "uint88"
                                              }
                                            ],
                                            "id": 4693,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "2493:7:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 4692,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "2493:7:32",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4695,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2493:20:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "hexValue": "313532",
                                          "id": 4696,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2517:3:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_152_by_1",
                                            "typeString": "int_const 152"
                                          },
                                          "value": "152"
                                        },
                                        "src": "2493:27:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4698,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2492:29:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2388:133:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 4702,
                                            "name": "minImpliedRate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4602,
                                            "src": "2545:14:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          ],
                                          "id": 4701,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2537:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 4700,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2537:7:32",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4703,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2537:23:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313230",
                                        "id": 4704,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2564:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_120_by_1",
                                          "typeString": "int_const 120"
                                        },
                                        "value": "120"
                                      },
                                      "src": "2537:30:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4706,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2536:32:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2388:180:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2367:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4671,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2367:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2367:211:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2345:233:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 4710,
                        "nodeType": "ExpressionStatement",
                        "src": "2345:233:32"
                      }
                    ]
                  },
                  "id": 4712,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "encodeLendETHTrade",
                  "nameLocation": "1727:18:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4594,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1762:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4712,
                        "src": "1755:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4593,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1755:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4596,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "1788:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4712,
                        "src": "1782:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4595,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1782:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4598,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "1817:21:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4712,
                        "src": "1809:29:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4597,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1809:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4600,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "1855:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4712,
                        "src": "1848:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 4599,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "1848:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4602,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "1883:14:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4712,
                        "src": "1876:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4601,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1876:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1745:158:32"
                  },
                  "returnParameters": {
                    "id": 4608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4607,
                        "mutability": "mutable",
                        "name": "action",
                        "nameLocation": "1960:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4712,
                        "src": "1927:39:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct BalanceActionWithTrades[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4605,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4604,
                              "name": "BalanceActionWithTrades",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4878,
                              "src": "1927:23:32"
                            },
                            "referencedDeclaration": 4878,
                            "src": "1927:23:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                              "typeString": "struct BalanceActionWithTrades"
                            }
                          },
                          "id": 4606,
                          "nodeType": "ArrayTypeName",
                          "src": "1927:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                            "typeString": "struct BalanceActionWithTrades[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1926:41:32"
                  },
                  "scope": 4826,
                  "src": "1718:867:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4824,
                    "nodeType": "Block",
                    "src": "2828:551:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 4736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4729,
                            "name": "action",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4727,
                            "src": "2838:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BalanceActionWithTrades memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 4734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2877:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "2847:29:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct BalanceActionWithTrades memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 4731,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 4730,
                                    "name": "BalanceActionWithTrades",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 4878,
                                    "src": "2851:23:32"
                                  },
                                  "referencedDeclaration": 4878,
                                  "src": "2851:23:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                                    "typeString": "struct BalanceActionWithTrades"
                                  }
                                },
                                "id": 4732,
                                "nodeType": "ArrayTypeName",
                                "src": "2851:25:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                                  "typeString": "struct BalanceActionWithTrades[]"
                                }
                              }
                            },
                            "id": 4735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2847:32:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BalanceActionWithTrades memory[] memory"
                            }
                          },
                          "src": "2838:41:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct BalanceActionWithTrades memory[] memory"
                          }
                        },
                        "id": 4737,
                        "nodeType": "ExpressionStatement",
                        "src": "2838:41:32"
                      },
                      {
                        "expression": {
                          "id": 4744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4738,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4727,
                                "src": "2889:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4740,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2896:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2889:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4741,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "actionType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4864,
                            "src": "2889:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_DepositActionType_$4849",
                              "typeString": "enum DepositActionType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 4742,
                              "name": "DepositActionType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4849,
                              "src": "2912:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_DepositActionType_$4849_$",
                                "typeString": "type(enum DepositActionType)"
                              }
                            },
                            "id": 4743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "None",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4842,
                            "src": "2912:22:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_DepositActionType_$4849",
                              "typeString": "enum DepositActionType"
                            }
                          },
                          "src": "2889:45:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_DepositActionType_$4849",
                            "typeString": "enum DepositActionType"
                          }
                        },
                        "id": 4745,
                        "nodeType": "ExpressionStatement",
                        "src": "2889:45:32"
                      },
                      {
                        "expression": {
                          "id": 4751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4746,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4727,
                                "src": "2944:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4748,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2951:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2944:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4749,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currencyId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4866,
                            "src": "2944:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4750,
                            "name": "currencyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4714,
                            "src": "2967:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "2944:33:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "id": 4752,
                        "nodeType": "ExpressionStatement",
                        "src": "2944:33:32"
                      },
                      {
                        "expression": {
                          "id": 4758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4753,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4727,
                                "src": "2987:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4755,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2994:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2987:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4756,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "withdrawEntireCashBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4872,
                            "src": "2987:35:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 4757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3025:4:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2987:42:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4759,
                        "nodeType": "ExpressionStatement",
                        "src": "2987:42:32"
                      },
                      {
                        "expression": {
                          "id": 4765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4760,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4727,
                                "src": "3039:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4762,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3046:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3039:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4763,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "redeemToUnderlying",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4874,
                            "src": "3039:28:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4764,
                            "name": "toUnderlying",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4722,
                            "src": "3070:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3039:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4766,
                        "nodeType": "ExpressionStatement",
                        "src": "3039:43:32"
                      },
                      {
                        "expression": {
                          "id": 4776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4767,
                                "name": "action",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4727,
                                "src": "3092:6:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "id": 4769,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 4768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3099:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3092:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory"
                              }
                            },
                            "id": 4770,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "trades",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4877,
                            "src": "3092:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 4774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3125:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 4773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "3111:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 4771,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3115:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 4772,
                                "nodeType": "ArrayTypeName",
                                "src": "3115:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 4775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3111:16:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "3092:35:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 4777,
                        "nodeType": "ExpressionStatement",
                        "src": "3092:35:32"
                      },
                      {
                        "expression": {
                          "id": 4822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 4778,
                                  "name": "action",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4727,
                                  "src": "3137:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct BalanceActionWithTrades memory[] memory"
                                  }
                                },
                                "id": 4780,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 4779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3144:1:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3137:9:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory"
                                }
                              },
                              "id": 4781,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "trades",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4877,
                              "src": "3137:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 4783,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3154:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3137:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4804,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4795,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "expression": {
                                                      "id": 4790,
                                                      "name": "TradeActionType",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4841,
                                                      "src": "3195:15:32",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_TradeActionType_$4841_$",
                                                        "typeString": "type(enum TradeActionType)"
                                                      }
                                                    },
                                                    "id": 4791,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Borrow",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4836,
                                                    "src": "3195:22:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_TradeActionType_$4841",
                                                      "typeString": "enum TradeActionType"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_enum$_TradeActionType_$4841",
                                                      "typeString": "enum TradeActionType"
                                                    }
                                                  ],
                                                  "id": 4789,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "3189:5:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                    "typeString": "type(uint8)"
                                                  },
                                                  "typeName": {
                                                    "id": 4788,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3189:5:32",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 4792,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3189:29:32",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 4787,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3181:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4786,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3181:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4793,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3181:38:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "323438",
                                            "id": 4794,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3223:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_248_by_1",
                                              "typeString": "int_const 248"
                                            },
                                            "value": "248"
                                          },
                                          "src": "3181:45:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4796,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3180:47:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4802,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "id": 4799,
                                                "name": "marketIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4716,
                                                "src": "3251:11:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "id": 4798,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3243:7:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 4797,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3243:7:32",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 4800,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3243:20:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "323430",
                                            "id": 4801,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3267:3:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_240_by_1",
                                              "typeString": "int_const 240"
                                            },
                                            "value": "240"
                                          },
                                          "src": "3243:27:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4803,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3242:29:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3180:91:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4810,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 4807,
                                              "name": "fCashAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4718,
                                              "src": "3295:11:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint88",
                                                "typeString": "uint88"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint88",
                                                "typeString": "uint88"
                                              }
                                            ],
                                            "id": 4806,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3287:7:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 4805,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3287:7:32",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4808,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3287:20:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "hexValue": "313532",
                                          "id": 4809,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3311:3:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_152_by_1",
                                            "typeString": "int_const 152"
                                          },
                                          "value": "152"
                                        },
                                        "src": "3287:27:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4811,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3286:29:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3180:135:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "|",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4818,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 4815,
                                            "name": "maxImpliedRate",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4720,
                                            "src": "3339:14:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          ],
                                          "id": 4814,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3331:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 4813,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3331:7:32",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4816,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3331:23:32",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313230",
                                        "id": 4817,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3358:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_120_by_1",
                                          "typeString": "int_const 120"
                                        },
                                        "value": "120"
                                      },
                                      "src": "3331:30:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 4819,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3330:32:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3180:182:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 4785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3159:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4784,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3159:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3159:213:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3137:235:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 4823,
                        "nodeType": "ExpressionStatement",
                        "src": "3137:235:32"
                      }
                    ]
                  },
                  "id": 4825,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "encodeBorrowTrade",
                  "nameLocation": "2600:17:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4714,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "2634:10:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4825,
                        "src": "2627:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4713,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "2627:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4716,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "2660:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4825,
                        "src": "2654:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4715,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2654:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4718,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "2688:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4825,
                        "src": "2681:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 4717,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "2681:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4720,
                        "mutability": "mutable",
                        "name": "maxImpliedRate",
                        "nameLocation": "2716:14:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4825,
                        "src": "2709:21:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 4719,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2709:6:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4722,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nameLocation": "2745:12:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4825,
                        "src": "2740:17:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4721,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2740:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2617:146:32"
                  },
                  "returnParameters": {
                    "id": 4728,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4727,
                        "mutability": "mutable",
                        "name": "action",
                        "nameLocation": "2820:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 4825,
                        "src": "2787:39:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct BalanceActionWithTrades[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4725,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4724,
                              "name": "BalanceActionWithTrades",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4878,
                              "src": "2787:23:32"
                            },
                            "referencedDeclaration": 4878,
                            "src": "2787:23:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                              "typeString": "struct BalanceActionWithTrades"
                            }
                          },
                          "id": 4726,
                          "nodeType": "ArrayTypeName",
                          "src": "2787:25:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                            "typeString": "struct BalanceActionWithTrades[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2786:41:32"
                  },
                  "scope": 4826,
                  "src": "2591:788:32",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4827,
              "src": "106:3275:32",
              "usedErrors": []
            }
          ],
          "src": "32:3349:32"
        },
        "id": 32
      },
      "wrapped-fcash/contracts/lib/Types.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/lib/Types.sol",
          "exportedSymbols": {
            "AccountBalance": [
              4951
            ],
            "AccountContext": [
              4940
            ],
            "AssetRateParameters": [
              4958
            ],
            "AssetStorageState": [
              4853
            ],
            "BalanceActionWithTrades": [
              4878
            ],
            "BatchLend": [
              4861
            ],
            "CashGroupSettings": [
              4929
            ],
            "DepositActionType": [
              4849
            ],
            "PortfolioAsset": [
              4904
            ],
            "Token": [
              4890
            ],
            "TokenType": [
              4834
            ],
            "TradeActionType": [
              4841
            ]
          },
          "id": 4959,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4828,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:33"
            },
            {
              "canonicalName": "TokenType",
              "id": 4834,
              "members": [
                {
                  "id": 4829,
                  "name": "UnderlyingToken",
                  "nameLocation": "404:15:33",
                  "nodeType": "EnumValue",
                  "src": "404:15:33"
                },
                {
                  "id": 4830,
                  "name": "cToken",
                  "nameLocation": "425:6:33",
                  "nodeType": "EnumValue",
                  "src": "425:6:33"
                },
                {
                  "id": 4831,
                  "name": "cETH",
                  "nameLocation": "437:4:33",
                  "nodeType": "EnumValue",
                  "src": "437:4:33"
                },
                {
                  "id": 4832,
                  "name": "Ether",
                  "nameLocation": "447:5:33",
                  "nodeType": "EnumValue",
                  "src": "447:5:33"
                },
                {
                  "id": 4833,
                  "name": "NonMintable",
                  "nameLocation": "458:11:33",
                  "nodeType": "EnumValue",
                  "src": "458:11:33"
                }
              ],
              "name": "TokenType",
              "nameLocation": "388:9:33",
              "nodeType": "EnumDefinition",
              "src": "383:88:33"
            },
            {
              "canonicalName": "TradeActionType",
              "id": 4841,
              "members": [
                {
                  "id": 4835,
                  "name": "Lend",
                  "nameLocation": "898:4:33",
                  "nodeType": "EnumValue",
                  "src": "898:4:33"
                },
                {
                  "id": 4836,
                  "name": "Borrow",
                  "nameLocation": "1017:6:33",
                  "nodeType": "EnumValue",
                  "src": "1017:6:33"
                },
                {
                  "id": 4837,
                  "name": "AddLiquidity",
                  "nameLocation": "1164:12:33",
                  "nodeType": "EnumValue",
                  "src": "1164:12:33"
                },
                {
                  "id": 4838,
                  "name": "RemoveLiquidity",
                  "nameLocation": "1313:15:33",
                  "nodeType": "EnumValue",
                  "src": "1313:15:33"
                },
                {
                  "id": 4839,
                  "name": "PurchaseNTokenResidual",
                  "nameLocation": "1425:22:33",
                  "nodeType": "EnumValue",
                  "src": "1425:22:33"
                },
                {
                  "id": 4840,
                  "name": "SettleCashDebt",
                  "nameLocation": "1540:14:33",
                  "nodeType": "EnumValue",
                  "src": "1540:14:33"
                }
              ],
              "name": "TradeActionType",
              "nameLocation": "767:15:33",
              "nodeType": "EnumDefinition",
              "src": "762:794:33"
            },
            {
              "canonicalName": "DepositActionType",
              "id": 4849,
              "members": [
                {
                  "id": 4842,
                  "name": "None",
                  "nameLocation": "1723:4:33",
                  "nodeType": "EnumValue",
                  "src": "1723:4:33"
                },
                {
                  "id": 4843,
                  "name": "DepositAsset",
                  "nameLocation": "1826:12:33",
                  "nodeType": "EnumValue",
                  "src": "1826:12:33"
                },
                {
                  "id": 4844,
                  "name": "DepositUnderlying",
                  "nameLocation": "1989:17:33",
                  "nodeType": "EnumValue",
                  "src": "1989:17:33"
                },
                {
                  "id": 4845,
                  "name": "DepositAssetAndMintNToken",
                  "nameLocation": "2160:25:33",
                  "nodeType": "EnumValue",
                  "src": "2160:25:33"
                },
                {
                  "id": 4846,
                  "name": "DepositUnderlyingAndMintNToken",
                  "nameLocation": "2310:30:33",
                  "nodeType": "EnumValue",
                  "src": "2310:30:33"
                },
                {
                  "id": 4847,
                  "name": "RedeemNToken",
                  "nameLocation": "2598:12:33",
                  "nodeType": "EnumValue",
                  "src": "2598:12:33"
                },
                {
                  "id": 4848,
                  "name": "ConvertCashToNToken",
                  "nameLocation": "2785:19:33",
                  "nodeType": "EnumValue",
                  "src": "2785:19:33"
                }
              ],
              "name": "DepositActionType",
              "nameLocation": "1674:17:33",
              "nodeType": "EnumDefinition",
              "src": "1669:1137:33"
            },
            {
              "canonicalName": "AssetStorageState",
              "id": 4853,
              "members": [
                {
                  "id": 4850,
                  "name": "NoChange",
                  "nameLocation": "2892:8:33",
                  "nodeType": "EnumValue",
                  "src": "2892:8:33"
                },
                {
                  "id": 4851,
                  "name": "Update",
                  "nameLocation": "2906:6:33",
                  "nodeType": "EnumValue",
                  "src": "2906:6:33"
                },
                {
                  "id": 4852,
                  "name": "Delete",
                  "nameLocation": "2918:6:33",
                  "nodeType": "EnumValue",
                  "src": "2918:6:33"
                }
              ],
              "name": "AssetStorageState",
              "nameLocation": "2868:17:33",
              "nodeType": "EnumDefinition",
              "src": "2863:63:33"
            },
            {
              "canonicalName": "BatchLend",
              "id": 4861,
              "members": [
                {
                  "constant": false,
                  "id": 4855,
                  "mutability": "mutable",
                  "name": "currencyId",
                  "nameLocation": "3001:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4861,
                  "src": "2994:17:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 4854,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2994:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4857,
                  "mutability": "mutable",
                  "name": "depositUnderlying",
                  "nameLocation": "3115:17:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4861,
                  "src": "3110:22:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4856,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3110:4:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4860,
                  "mutability": "mutable",
                  "name": "trades",
                  "nameLocation": "3252:6:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4861,
                  "src": "3242:16:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4858,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3242:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 4859,
                    "nodeType": "ArrayTypeName",
                    "src": "3242:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "BatchLend",
              "nameLocation": "2978:9:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "2971:290:33",
              "visibility": "public"
            },
            {
              "canonicalName": "BalanceActionWithTrades",
              "id": 4878,
              "members": [
                {
                  "constant": false,
                  "id": 4864,
                  "mutability": "mutable",
                  "name": "actionType",
                  "nameLocation": "3390:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3372:28:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_DepositActionType_$4849",
                    "typeString": "enum DepositActionType"
                  },
                  "typeName": {
                    "id": 4863,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4862,
                      "name": "DepositActionType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4849,
                      "src": "3372:17:33"
                    },
                    "referencedDeclaration": 4849,
                    "src": "3372:17:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_DepositActionType_$4849",
                      "typeString": "enum DepositActionType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4866,
                  "mutability": "mutable",
                  "name": "currencyId",
                  "nameLocation": "3413:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3406:17:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 4865,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "3406:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4868,
                  "mutability": "mutable",
                  "name": "depositActionAmount",
                  "nameLocation": "3437:19:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3429:27:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4867,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3429:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4870,
                  "mutability": "mutable",
                  "name": "withdrawAmountInternalPrecision",
                  "nameLocation": "3470:31:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3462:39:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4869,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3462:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4872,
                  "mutability": "mutable",
                  "name": "withdrawEntireCashBalance",
                  "nameLocation": "3512:25:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3507:30:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4871,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3507:4:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4874,
                  "mutability": "mutable",
                  "name": "redeemToUnderlying",
                  "nameLocation": "3548:18:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3543:23:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4873,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3543:4:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4877,
                  "mutability": "mutable",
                  "name": "trades",
                  "nameLocation": "3686:6:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4878,
                  "src": "3676:16:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4875,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3676:7:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 4876,
                    "nodeType": "ArrayTypeName",
                    "src": "3676:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "BalanceActionWithTrades",
              "nameLocation": "3342:23:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "3335:360:33",
              "visibility": "public"
            },
            {
              "canonicalName": "Token",
              "id": 4890,
              "members": [
                {
                  "constant": false,
                  "id": 4880,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nameLocation": "3776:12:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4890,
                  "src": "3768:20:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4879,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3768:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4882,
                  "mutability": "mutable",
                  "name": "hasTransferFee",
                  "nameLocation": "3799:14:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4890,
                  "src": "3794:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4881,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3794:4:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4884,
                  "mutability": "mutable",
                  "name": "decimals",
                  "nameLocation": "3826:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4890,
                  "src": "3819:15:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4883,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3819:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4887,
                  "mutability": "mutable",
                  "name": "tokenType",
                  "nameLocation": "3850:9:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4890,
                  "src": "3840:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_TokenType_$4834",
                    "typeString": "enum TokenType"
                  },
                  "typeName": {
                    "id": 4886,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4885,
                      "name": "TokenType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4834,
                      "src": "3840:9:33"
                    },
                    "referencedDeclaration": 4834,
                    "src": "3840:9:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_TokenType_$4834",
                      "typeString": "enum TokenType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4889,
                  "mutability": "mutable",
                  "name": "maxCollateralBalance",
                  "nameLocation": "3873:20:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4890,
                  "src": "3865:28:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3865:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Token",
              "nameLocation": "3756:5:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "3749:147:33",
              "visibility": "public"
            },
            {
              "canonicalName": "PortfolioAsset",
              "id": 4904,
              "members": [
                {
                  "constant": false,
                  "id": 4892,
                  "mutability": "mutable",
                  "name": "currencyId",
                  "nameLocation": "3959:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4904,
                  "src": "3951:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3951:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4894,
                  "mutability": "mutable",
                  "name": "maturity",
                  "nameLocation": "3983:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4904,
                  "src": "3975:16:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3975:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4896,
                  "mutability": "mutable",
                  "name": "assetType",
                  "nameLocation": "4050:9:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4904,
                  "src": "4042:17:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4042:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4898,
                  "mutability": "mutable",
                  "name": "notional",
                  "nameLocation": "4118:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4904,
                  "src": "4111:15:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4897,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4111:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4900,
                  "mutability": "mutable",
                  "name": "storageSlot",
                  "nameLocation": "4187:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4904,
                  "src": "4179:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4899,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4179:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4903,
                  "mutability": "mutable",
                  "name": "storageState",
                  "nameLocation": "4286:12:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4904,
                  "src": "4268:30:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_AssetStorageState_$4853",
                    "typeString": "enum AssetStorageState"
                  },
                  "typeName": {
                    "id": 4902,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4901,
                      "name": "AssetStorageState",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4853,
                      "src": "4268:17:33"
                    },
                    "referencedDeclaration": 4853,
                    "src": "4268:17:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_AssetStorageState_$4853",
                      "typeString": "enum AssetStorageState"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "PortfolioAsset",
              "nameLocation": "3905:14:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "3898:403:33",
              "visibility": "public"
            },
            {
              "canonicalName": "CashGroupSettings",
              "id": 4929,
              "members": [
                {
                  "constant": false,
                  "id": 4906,
                  "mutability": "mutable",
                  "name": "maxMarketIndex",
                  "nameLocation": "4844:14:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "4838:20:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4905,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4838:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4908,
                  "mutability": "mutable",
                  "name": "rateOracleTimeWindowMin",
                  "nameLocation": "4943:23:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "4937:29:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4907,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4910,
                  "mutability": "mutable",
                  "name": "totalFeeBPS",
                  "nameLocation": "5024:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5018:17:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4909,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5018:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4912,
                  "mutability": "mutable",
                  "name": "reserveFeeShare",
                  "nameLocation": "5121:15:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5115:21:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4911,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5115:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4914,
                  "mutability": "mutable",
                  "name": "debtBuffer5BPS",
                  "nameLocation": "5197:14:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5191:20:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4913,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5191:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4916,
                  "mutability": "mutable",
                  "name": "fCashHaircut5BPS",
                  "nameLocation": "5274:16:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5268:22:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4915,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5268:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4918,
                  "mutability": "mutable",
                  "name": "settlementPenaltyRate5BPS",
                  "nameLocation": "5516:25:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5510:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4917,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5510:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4920,
                  "mutability": "mutable",
                  "name": "liquidationfCashHaircut5BPS",
                  "nameLocation": "5671:27:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5665:33:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4919,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5665:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4922,
                  "mutability": "mutable",
                  "name": "liquidationDebtBuffer5BPS",
                  "nameLocation": "5828:25:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5822:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4921,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5822:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4925,
                  "mutability": "mutable",
                  "name": "liquidityTokenHaircuts",
                  "nameLocation": "5966:22:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "5958:30:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4923,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "5958:5:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4924,
                    "nodeType": "ArrayTypeName",
                    "src": "5958:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4928,
                  "mutability": "mutable",
                  "name": "rateScalars",
                  "nameLocation": "6066:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4929,
                  "src": "6058:19:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4926,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "6058:5:33",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 4927,
                    "nodeType": "ArrayTypeName",
                    "src": "6058:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "CashGroupSettings",
              "nameLocation": "4666:17:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "4659:1421:33",
              "visibility": "public"
            },
            {
              "canonicalName": "AccountContext",
              "id": 4940,
              "members": [
                {
                  "constant": false,
                  "id": 4931,
                  "mutability": "mutable",
                  "name": "nextSettleTime",
                  "nameLocation": "6323:14:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4940,
                  "src": "6316:21:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  },
                  "typeName": {
                    "id": 4930,
                    "name": "uint40",
                    "nodeType": "ElementaryTypeName",
                    "src": "6316:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4933,
                  "mutability": "mutable",
                  "name": "hasDebt",
                  "nameLocation": "6444:7:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4940,
                  "src": "6437:14:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes1",
                    "typeString": "bytes1"
                  },
                  "typeName": {
                    "id": 4932,
                    "name": "bytes1",
                    "nodeType": "ElementaryTypeName",
                    "src": "6437:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4935,
                  "mutability": "mutable",
                  "name": "assetArrayLength",
                  "nameLocation": "6506:16:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4940,
                  "src": "6500:22:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4934,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "6500:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4937,
                  "mutability": "mutable",
                  "name": "bitmapCurrencyId",
                  "nameLocation": "6613:16:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4940,
                  "src": "6606:23:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 4936,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "6606:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4939,
                  "mutability": "mutable",
                  "name": "activeCurrencies",
                  "nameLocation": "6700:16:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4940,
                  "src": "6692:24:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes18",
                    "typeString": "bytes18"
                  },
                  "typeName": {
                    "id": 4938,
                    "name": "bytes18",
                    "nodeType": "ElementaryTypeName",
                    "src": "6692:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes18",
                      "typeString": "bytes18"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AccountContext",
              "nameLocation": "6226:14:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "6219:500:33",
              "visibility": "public"
            },
            {
              "canonicalName": "AccountBalance",
              "id": 4951,
              "members": [
                {
                  "constant": false,
                  "id": 4942,
                  "mutability": "mutable",
                  "name": "currencyId",
                  "nameLocation": "6845:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4951,
                  "src": "6837:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4941,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6837:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4944,
                  "mutability": "mutable",
                  "name": "cashBalance",
                  "nameLocation": "6868:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4951,
                  "src": "6861:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4943,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6861:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4946,
                  "mutability": "mutable",
                  "name": "nTokenBalance",
                  "nameLocation": "6892:13:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4951,
                  "src": "6885:20:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4945,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6885:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4948,
                  "mutability": "mutable",
                  "name": "lastClaimTime",
                  "nameLocation": "6919:13:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4951,
                  "src": "6911:21:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4947,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6911:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4950,
                  "mutability": "mutable",
                  "name": "lastClaimIntegralSupply",
                  "nameLocation": "6946:23:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4951,
                  "src": "6938:31:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6938:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AccountBalance",
              "nameLocation": "6816:14:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "6809:163:33",
              "visibility": "public"
            },
            {
              "canonicalName": "AssetRateParameters",
              "id": 4958,
              "members": [
                {
                  "constant": false,
                  "id": 4953,
                  "mutability": "mutable",
                  "name": "rateOracle",
                  "nameLocation": "7130:10:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4958,
                  "src": "7122:18:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4952,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7122:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4955,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "7240:4:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4958,
                  "src": "7233:11:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4954,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7233:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4957,
                  "mutability": "mutable",
                  "name": "underlyingDecimals",
                  "nameLocation": "7341:18:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 4958,
                  "src": "7334:25:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4956,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AssetRateParameters",
              "nameLocation": "7056:19:33",
              "nodeType": "StructDefinition",
              "scope": 4959,
              "src": "7049:313:33",
              "visibility": "public"
            }
          ],
          "src": "32:7331:33"
        },
        "id": 33
      },
      "wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/proxy/WrappedfCashFactory.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "BeaconProxy": [
              2560
            ],
            "Create2": [
              3599
            ],
            "ERC1967Upgrade": [
              2426
            ],
            "IBeacon": [
              2570
            ],
            "IERC1822Proxiable": [
              2108
            ],
            "Proxy": [
              2478
            ],
            "StorageSlot": [
              3659
            ],
            "WrappedfCashFactory": [
              5087
            ],
            "nBeaconProxy": [
              5110
            ]
          },
          "id": 5088,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4960,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:34"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/Create2.sol",
              "file": "openzeppelin-contracts-V4/utils/Create2.sol",
              "id": 4961,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5088,
              "sourceUnit": 3600,
              "src": "57:53:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/contracts/proxy/nBeaconProxy.sol",
              "file": "./nBeaconProxy.sol",
              "id": 4962,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5088,
              "sourceUnit": 5111,
              "src": "111:28:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "WrappedfCashFactory",
              "contractDependencies": [
                5110
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5087,
              "linearizedBaseContracts": [
                5087
              ],
              "name": "WrappedfCashFactory",
              "nameLocation": "150:19:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 4963,
                    "nodeType": "StructuredDocumentation",
                    "src": "177:159:34",
                    "text": "@dev the Beacon contract here is an UpgradeableBeacon proxy, the contract\n at this address can be upgraded which will upgrade all deployed wrappers."
                  },
                  "functionSelector": "49493a4d",
                  "id": 4965,
                  "mutability": "immutable",
                  "name": "BEACON",
                  "nameLocation": "366:6:34",
                  "nodeType": "VariableDeclaration",
                  "scope": 5087,
                  "src": "341:31:34",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4964,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "341:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "ba9a91a5",
                  "id": 4968,
                  "mutability": "constant",
                  "name": "SALT",
                  "nameLocation": "402:4:34",
                  "nodeType": "VariableDeclaration",
                  "scope": 5087,
                  "src": "378:32:34",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4966,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "30",
                    "id": 4967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "409:1:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 4969,
                    "nodeType": "StructuredDocumentation",
                    "src": "417:62:34",
                    "text": "@notice Emitted when a new fCash wrapper has been deployed"
                  },
                  "id": 4977,
                  "name": "WrapperDeployed",
                  "nameLocation": "490:15:34",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4971,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "513:10:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 4977,
                        "src": "506:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4970,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "506:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4973,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "532:8:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 4977,
                        "src": "525:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 4972,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "525:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4975,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "wrapper",
                        "nameLocation": "550:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 4977,
                        "src": "542:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4974,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "542:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "505:53:34"
                  },
                  "src": "484:75:34"
                },
                {
                  "body": {
                    "id": 4986,
                    "nodeType": "Block",
                    "src": "594:33:34",
                    "statements": [
                      {
                        "expression": {
                          "id": 4984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4982,
                            "name": "BEACON",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4965,
                            "src": "604:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4983,
                            "name": "_beacon",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4979,
                            "src": "613:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "604:16:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4985,
                        "nodeType": "ExpressionStatement",
                        "src": "604:16:34"
                      }
                    ]
                  },
                  "id": 4987,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4979,
                        "mutability": "mutable",
                        "name": "_beacon",
                        "nameLocation": "585:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 4987,
                        "src": "577:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4978,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "577:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "576:17:34"
                  },
                  "returnParameters": {
                    "id": 4981,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "594:0:34"
                  },
                  "scope": 5087,
                  "src": "565:62:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5018,
                    "nodeType": "Block",
                    "src": "728:219:34",
                    "statements": [
                      {
                        "assignments": [
                          4997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4997,
                            "mutability": "mutable",
                            "name": "initCallData",
                            "nameLocation": "751:12:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 5018,
                            "src": "738:25:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4996,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "738:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5004,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "696e697469616c697a652875696e7431362c75696e74343029",
                              "id": 5000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "790:27:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_152b838cc25ba258cfe3e619f64da2918fc9b23c9e0458c07c11340f7dba69b7",
                                "typeString": "literal_string \"initialize(uint16,uint40)\""
                              },
                              "value": "initialize(uint16,uint40)"
                            },
                            {
                              "id": 5001,
                              "name": "currencyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4989,
                              "src": "819:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "id": 5002,
                              "name": "maturity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4991,
                              "src": "831:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_152b838cc25ba258cfe3e619f64da2918fc9b23c9e0458c07c11340f7dba69b7",
                                "typeString": "literal_string \"initialize(uint16,uint40)\""
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "expression": {
                              "id": 4998,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "766:3:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 4999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "src": "766:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 5003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "766:74:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "738:102:34"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5008,
                                    "name": "nBeaconProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5110,
                                    "src": "879:12:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_nBeaconProxy_$5110_$",
                                      "typeString": "type(contract nBeaconProxy)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_nBeaconProxy_$5110_$",
                                      "typeString": "type(contract nBeaconProxy)"
                                    }
                                  ],
                                  "id": 5007,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "874:4:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "874:18:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_nBeaconProxy_$5110",
                                  "typeString": "type(contract nBeaconProxy)"
                                }
                              },
                              "id": 5010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "creationCode",
                              "nodeType": "MemberAccess",
                              "src": "874:31:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5013,
                                  "name": "BEACON",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4965,
                                  "src": "918:6:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5014,
                                  "name": "initCallData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4997,
                                  "src": "926:12:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5011,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "907:3:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5012,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "907:10:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "907:32:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 5005,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "857:3:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 5006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "857:16:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 5016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "857:83:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 4995,
                        "id": 5017,
                        "nodeType": "Return",
                        "src": "850:90:34"
                      }
                    ]
                  },
                  "id": 5019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getByteCode",
                  "nameLocation": "642:12:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4989,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "662:10:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5019,
                        "src": "655:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 4988,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "655:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4991,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "681:8:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5019,
                        "src": "674:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 4990,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "654:36:34"
                  },
                  "returnParameters": {
                    "id": 4995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4994,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5019,
                        "src": "714:12:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4993,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "714:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "713:14:34"
                  },
                  "scope": 5087,
                  "src": "633:314:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5064,
                    "nodeType": "Block",
                    "src": "1039:463:34",
                    "statements": [
                      {
                        "assignments": [
                          5029
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5029,
                            "mutability": "mutable",
                            "name": "_computedWrapper",
                            "nameLocation": "1057:16:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 5064,
                            "src": "1049:24:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5028,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1049:7:34",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5034,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5031,
                              "name": "currencyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5021,
                              "src": "1091:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "id": 5032,
                              "name": "maturity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5023,
                              "src": "1103:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "id": 5030,
                            "name": "computeAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5086,
                            "src": "1076:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_uint40_$returns$_t_address_$",
                              "typeString": "function (uint16,uint40) view returns (address)"
                            }
                          },
                          "id": 5033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1076:36:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1049:63:34"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 5037,
                              "name": "_computedWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5029,
                              "src": "1146:16:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5035,
                              "name": "Address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3466,
                              "src": "1127:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Address_$3466_$",
                                "typeString": "type(library Address)"
                              }
                            },
                            "id": 5036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3189,
                            "src": "1127:18:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 5038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1127:36:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5062,
                          "nodeType": "Block",
                          "src": "1301:195:34",
                          "statements": [
                            {
                              "assignments": [
                                5043
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5043,
                                  "mutability": "mutable",
                                  "name": "wrapper",
                                  "nameLocation": "1323:7:34",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5062,
                                  "src": "1315:15:34",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 5042,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1315:7:34",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5053,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5046,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1348:1:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 5047,
                                    "name": "SALT",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4968,
                                    "src": "1351:4:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 5049,
                                        "name": "currencyId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5021,
                                        "src": "1370:10:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      {
                                        "id": 5050,
                                        "name": "maturity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5023,
                                        "src": "1382:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint40",
                                          "typeString": "uint40"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        },
                                        {
                                          "typeIdentifier": "t_uint40",
                                          "typeString": "uint40"
                                        }
                                      ],
                                      "id": 5048,
                                      "name": "_getByteCode",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5019,
                                      "src": "1357:12:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_uint40_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (uint16,uint40) view returns (bytes memory)"
                                      }
                                    },
                                    "id": 5051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1357:34:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5044,
                                    "name": "Create2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3599,
                                    "src": "1333:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Create2_$3599_$",
                                      "typeString": "type(library Create2)"
                                    }
                                  },
                                  "id": 5045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deploy",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3539,
                                  "src": "1333:14:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                    "typeString": "function (uint256,bytes32,bytes memory) returns (address)"
                                  }
                                },
                                "id": 5052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1333:59:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1315:77:34"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 5055,
                                    "name": "currencyId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5021,
                                    "src": "1427:10:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "id": 5056,
                                    "name": "maturity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5023,
                                    "src": "1439:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  {
                                    "id": 5057,
                                    "name": "wrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5043,
                                    "src": "1449:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5054,
                                  "name": "WrapperDeployed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4977,
                                  "src": "1411:15:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint16_$_t_uint40_$_t_address_$returns$__$",
                                    "typeString": "function (uint16,uint40,address)"
                                  }
                                },
                                "id": 5058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1411:46:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5059,
                              "nodeType": "EmitStatement",
                              "src": "1406:51:34"
                            },
                            {
                              "expression": {
                                "id": 5060,
                                "name": "wrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5043,
                                "src": "1478:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 5027,
                              "id": 5061,
                              "nodeType": "Return",
                              "src": "1471:14:34"
                            }
                          ]
                        },
                        "id": 5063,
                        "nodeType": "IfStatement",
                        "src": "1123:373:34",
                        "trueBody": {
                          "id": 5041,
                          "nodeType": "Block",
                          "src": "1165:130:34",
                          "statements": [
                            {
                              "expression": {
                                "id": 5039,
                                "name": "_computedWrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5029,
                                "src": "1268:16:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 5027,
                              "id": 5040,
                              "nodeType": "Return",
                              "src": "1261:23:34"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "422a73a4",
                  "id": 5065,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployWrapper",
                  "nameLocation": "962:13:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5024,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5021,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "983:10:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5065,
                        "src": "976:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5020,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "976:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5023,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1002:8:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5065,
                        "src": "995:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 5022,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "995:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "975:36:34"
                  },
                  "returnParameters": {
                    "id": 5027,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5026,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5065,
                        "src": "1030:7:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5025,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1030:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1029:9:34"
                  },
                  "scope": 5087,
                  "src": "953:549:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5085,
                    "nodeType": "Block",
                    "src": "1598:99:34",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5076,
                              "name": "SALT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4968,
                              "src": "1638:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5079,
                                      "name": "currencyId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5067,
                                      "src": "1667:10:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "id": 5080,
                                      "name": "maturity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5069,
                                      "src": "1679:8:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint40",
                                        "typeString": "uint40"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint40",
                                        "typeString": "uint40"
                                      }
                                    ],
                                    "id": 5078,
                                    "name": "_getByteCode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5019,
                                    "src": "1654:12:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_uint40_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint16,uint40) view returns (bytes memory)"
                                    }
                                  },
                                  "id": 5081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1654:34:34",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5077,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "1644:9:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1644:45:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 5074,
                              "name": "Create2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3599,
                              "src": "1615:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Create2_$3599_$",
                                "typeString": "type(library Create2)"
                              }
                            },
                            "id": 5075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "computeAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3559,
                            "src": "1615:22:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes32) view returns (address)"
                            }
                          },
                          "id": 5083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1615:75:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5073,
                        "id": 5084,
                        "nodeType": "Return",
                        "src": "1608:82:34"
                      }
                    ]
                  },
                  "functionSelector": "95fd9765",
                  "id": 5086,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "computeAddress",
                  "nameLocation": "1517:14:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5070,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5067,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1539:10:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5086,
                        "src": "1532:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5066,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1532:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5069,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1558:8:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5086,
                        "src": "1551:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 5068,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "1551:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1531:36:34"
                  },
                  "returnParameters": {
                    "id": 5073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5072,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5086,
                        "src": "1589:7:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5071,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1589:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1588:9:34"
                  },
                  "scope": 5087,
                  "src": "1508:189:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5088,
              "src": "141:1558:34",
              "usedErrors": []
            }
          ],
          "src": "32:1667:34"
        },
        "id": 34
      },
      "wrapped-fcash/contracts/proxy/nBeaconProxy.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/proxy/nBeaconProxy.sol",
          "exportedSymbols": {
            "Address": [
              3466
            ],
            "BeaconProxy": [
              2560
            ],
            "ERC1967Upgrade": [
              2426
            ],
            "IBeacon": [
              2570
            ],
            "IERC1822Proxiable": [
              2108
            ],
            "Proxy": [
              2478
            ],
            "StorageSlot": [
              3659
            ],
            "nBeaconProxy": [
              5110
            ]
          },
          "id": 5111,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5089,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:35"
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol",
              "file": "openzeppelin-contracts-V4/proxy/beacon/BeaconProxy.sol",
              "id": 5090,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5111,
              "sourceUnit": 2561,
              "src": "57:64:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5091,
                    "name": "BeaconProxy",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2560,
                    "src": "148:11:35"
                  },
                  "id": 5092,
                  "nodeType": "InheritanceSpecifier",
                  "src": "148:11:35"
                }
              ],
              "canonicalName": "nBeaconProxy",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5110,
              "linearizedBaseContracts": [
                5110,
                2560,
                2426,
                2478
              ],
              "name": "nBeaconProxy",
              "nameLocation": "132:12:35",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5103,
                    "nodeType": "Block",
                    "src": "247:3:35",
                    "statements": []
                  },
                  "id": 5104,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5099,
                          "name": "beacon",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5094,
                          "src": "233:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 5100,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5096,
                          "src": "241:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 5101,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5098,
                        "name": "BeaconProxy",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2560,
                        "src": "221:11:35"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "221:25:35"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5094,
                        "mutability": "mutable",
                        "name": "beacon",
                        "nameLocation": "186:6:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5104,
                        "src": "178:14:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5093,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "178:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5096,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "207:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5104,
                        "src": "194:17:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5095,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "194:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "177:35:35"
                  },
                  "returnParameters": {
                    "id": 5102,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "247:0:35"
                  },
                  "scope": 5110,
                  "src": "166:84:35",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2472
                  ],
                  "body": {
                    "id": 5108,
                    "nodeType": "Block",
                    "src": "292:49:35",
                    "statements": []
                  },
                  "id": 5109,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5106,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "283:8:35"
                  },
                  "parameters": {
                    "id": 5105,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "263:2:35"
                  },
                  "returnParameters": {
                    "id": 5107,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "292:0:35"
                  },
                  "scope": 5110,
                  "src": "256:85:35",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5111,
              "src": "123:220:35",
              "usedErrors": []
            }
          ],
          "src": "32:311:35"
        },
        "id": 35
      },
      "wrapped-fcash/contracts/wfCashBase.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/wfCashBase.sol",
          "exportedSymbols": {
            "AccountBalance": [
              4951
            ],
            "AccountContext": [
              4940
            ],
            "Address": [
              3466
            ],
            "AddressUpgradeable": [
              1785
            ],
            "AssetRateParameters": [
              4958
            ],
            "AssetStorageState": [
              4853
            ],
            "BalanceActionWithTrades": [
              4878
            ],
            "BatchLend": [
              4861
            ],
            "CashGroupSettings": [
              4929
            ],
            "Constants": [
              3949
            ],
            "ContextUpgradeable": [
              1827
            ],
            "DateTime": [
              4373
            ],
            "DepositActionType": [
              4849
            ],
            "ERC777Upgradeable": [
              1343
            ],
            "EncodeDecode": [
              4826
            ],
            "IERC1820RegistryUpgradeable": [
              1917
            ],
            "IERC20": [
              2763
            ],
            "IERC20Metadata": [
              2788
            ],
            "IERC20Upgradeable": [
              151
            ],
            "IERC4626": [
              7243
            ],
            "IERC777": [
              3171
            ],
            "IERC777RecipientUpgradeable": [
              1363
            ],
            "IERC777SenderUpgradeable": [
              1383
            ],
            "IERC777Upgradeable": [
              1542
            ],
            "INotionalV2": [
              7474
            ],
            "IWETH9": [
              7263
            ],
            "IWrappedfCash": [
              7606
            ],
            "IWrappedfCashComplete": [
              7613
            ],
            "Initializable": [
              73
            ],
            "PortfolioAsset": [
              4904
            ],
            "SafeERC20": [
              3012
            ],
            "Strings": [
              3862
            ],
            "Token": [
              4890
            ],
            "TokenType": [
              4834
            ],
            "TradeActionType": [
              4841
            ],
            "wfCashBase": [
              5560
            ]
          },
          "id": 5561,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5112,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:36"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/Constants.sol",
              "file": "./lib/Constants.sol",
              "id": 5113,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 3950,
              "src": "57:29:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/DateTime.sol",
              "file": "./lib/DateTime.sol",
              "id": 5114,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 4374,
              "src": "87:28:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/EncodeDecode.sol",
              "file": "./lib/EncodeDecode.sol",
              "id": 5115,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 4827,
              "src": "116:32:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/notional/INotionalV2.sol",
              "file": "../interfaces/notional/INotionalV2.sol",
              "id": 5116,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 7475,
              "src": "149:48:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/notional/IWrappedfCash.sol",
              "file": "../interfaces/notional/IWrappedfCash.sol",
              "id": 5117,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 7614,
              "src": "198:50:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/IWETH9.sol",
              "file": "../interfaces/IWETH9.sol",
              "id": 5118,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 7264,
              "src": "249:34:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/utils/Strings.sol",
              "file": "openzeppelin-contracts-V4/utils/Strings.sol",
              "id": 5119,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 3863,
              "src": "284:53:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
              "file": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
              "id": 5120,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 2764,
              "src": "338:58:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol",
              "file": "openzeppelin-contracts-V4/token/ERC20/utils/SafeERC20.sol",
              "id": 5121,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 3013,
              "src": "397:67:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol",
              "file": "openzeppelin-contracts-V4/token/ERC20/extensions/IERC20Metadata.sol",
              "id": 5122,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 2789,
              "src": "465:77:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol",
              "file": "@openzeppelin-upgradeable/contracts/token/ERC777/ERC777Upgradeable.sol",
              "id": 5123,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5561,
              "sourceUnit": 1344,
              "src": "543:80:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5124,
                    "name": "ERC777Upgradeable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1343,
                    "src": "657:17:36"
                  },
                  "id": 5125,
                  "nodeType": "InheritanceSpecifier",
                  "src": "657:17:36"
                },
                {
                  "baseName": {
                    "id": 5126,
                    "name": "IWrappedfCash",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7606,
                    "src": "676:13:36"
                  },
                  "id": 5127,
                  "nodeType": "InheritanceSpecifier",
                  "src": "676:13:36"
                }
              ],
              "canonicalName": "wfCashBase",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": false,
              "id": 5560,
              "linearizedBaseContracts": [
                5560,
                7606,
                1343,
                151,
                1542,
                1827,
                73
              ],
              "name": "wfCashBase",
              "nameLocation": "643:10:36",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 5131,
                  "libraryName": {
                    "id": 5128,
                    "name": "SafeERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3012,
                    "src": "702:9:36"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "696:27:36",
                  "typeName": {
                    "id": 5130,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5129,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2763,
                      "src": "716:6:36"
                    },
                    "referencedDeclaration": 2763,
                    "src": "716:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2763",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 5132,
                    "nodeType": "StructuredDocumentation",
                    "src": "729:44:36",
                    "text": "@notice address to the NotionalV2 system"
                  },
                  "functionSelector": "19b53d35",
                  "id": 5135,
                  "mutability": "immutable",
                  "name": "NotionalV2",
                  "nameLocation": "807:10:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 5560,
                  "src": "778:39:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_INotionalV2_$7474",
                    "typeString": "contract INotionalV2"
                  },
                  "typeName": {
                    "id": 5134,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5133,
                      "name": "INotionalV2",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 7474,
                      "src": "778:11:36"
                    },
                    "referencedDeclaration": 7474,
                    "src": "778:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                      "typeString": "contract INotionalV2"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "ad5c4648",
                  "id": 5138,
                  "mutability": "immutable",
                  "name": "WETH",
                  "nameLocation": "847:4:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 5560,
                  "src": "823:28:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWETH9_$7263",
                    "typeString": "contract IWETH9"
                  },
                  "typeName": {
                    "id": 5137,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5136,
                      "name": "IWETH9",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 7263,
                      "src": "823:6:36"
                    },
                    "referencedDeclaration": 7263,
                    "src": "823:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH9_$7263",
                      "typeString": "contract IWETH9"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 5139,
                    "nodeType": "StructuredDocumentation",
                    "src": "858:71:36",
                    "text": "@dev Storage slot for fCash id. Read only and set on initialization"
                  },
                  "id": 5141,
                  "mutability": "mutable",
                  "name": "_fCashId",
                  "nameLocation": "950:8:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 5560,
                  "src": "934:24:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5140,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 5161,
                    "nodeType": "Block",
                    "src": "1276:61:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 5155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5153,
                            "name": "NotionalV2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5135,
                            "src": "1286:10:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INotionalV2_$7474",
                              "typeString": "contract INotionalV2"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5154,
                            "name": "_notional",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5145,
                            "src": "1299:9:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_INotionalV2_$7474",
                              "typeString": "contract INotionalV2"
                            }
                          },
                          "src": "1286:22:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        "id": 5156,
                        "nodeType": "ExpressionStatement",
                        "src": "1286:22:36"
                      },
                      {
                        "expression": {
                          "id": 5159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5157,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5138,
                            "src": "1318:4:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH9_$7263",
                              "typeString": "contract IWETH9"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5158,
                            "name": "_weth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5148,
                            "src": "1325:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH9_$7263",
                              "typeString": "contract IWETH9"
                            }
                          },
                          "src": "1318:12:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        },
                        "id": 5160,
                        "nodeType": "ExpressionStatement",
                        "src": "1318:12:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5142,
                    "nodeType": "StructuredDocumentation",
                    "src": "965:245:36",
                    "text": "@notice Constructor is called only on deployment to set the Notional address, rest of state\n is initialized on the proxy.\n @dev Ensure initializer modifier is on the constructor to prevent an attack on UUPSUpgradeable contracts"
                  },
                  "id": 5162,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "id": 5151,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5150,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 47,
                        "src": "1264:11:36"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1264:11:36"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5145,
                        "mutability": "mutable",
                        "name": "_notional",
                        "nameLocation": "1239:9:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5162,
                        "src": "1227:21:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                          "typeString": "contract INotionalV2"
                        },
                        "typeName": {
                          "id": 5144,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5143,
                            "name": "INotionalV2",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7474,
                            "src": "1227:11:36"
                          },
                          "referencedDeclaration": 7474,
                          "src": "1227:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5148,
                        "mutability": "mutable",
                        "name": "_weth",
                        "nameLocation": "1257:5:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5162,
                        "src": "1250:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH9_$7263",
                          "typeString": "contract IWETH9"
                        },
                        "typeName": {
                          "id": 5147,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5146,
                            "name": "IWETH9",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7263,
                            "src": "1250:6:36"
                          },
                          "referencedDeclaration": 7263,
                          "src": "1250:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1226:37:36"
                  },
                  "returnParameters": {
                    "id": 5152,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1276:0:36"
                  },
                  "scope": 5560,
                  "src": "1215:122:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7497
                  ],
                  "body": {
                    "id": 5325,
                    "nodeType": "Block",
                    "src": "1492:1778:36",
                    "statements": [
                      {
                        "assignments": [
                          5175
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5175,
                            "mutability": "mutable",
                            "name": "cashGroup",
                            "nameLocation": "1527:9:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5325,
                            "src": "1502:34:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CashGroupSettings_$4929_memory_ptr",
                              "typeString": "struct CashGroupSettings"
                            },
                            "typeName": {
                              "id": 5174,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5173,
                                "name": "CashGroupSettings",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4929,
                                "src": "1502:17:36"
                              },
                              "referencedDeclaration": 4929,
                              "src": "1502:17:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CashGroupSettings_$4929_storage_ptr",
                                "typeString": "struct CashGroupSettings"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5180,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5178,
                              "name": "currencyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5165,
                              "src": "1563:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "id": 5176,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "1539:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 5177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCashGroup",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7286,
                            "src": "1539:23:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_struct$_CashGroupSettings_$4929_memory_ptr_$",
                              "typeString": "function (uint16) view external returns (struct CashGroupSettings memory)"
                            }
                          },
                          "id": 5179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1539:35:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CashGroupSettings_$4929_memory_ptr",
                            "typeString": "struct CashGroupSettings memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1502:72:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 5185,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5182,
                                  "name": "cashGroup",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5175,
                                  "src": "1592:9:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CashGroupSettings_$4929_memory_ptr",
                                    "typeString": "struct CashGroupSettings memory"
                                  }
                                },
                                "id": 5183,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maxMarketIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4906,
                                "src": "1592:24:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1619:1:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1592:28:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c69642063757272656e6379",
                              "id": 5186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1622:18:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d",
                                "typeString": "literal_string \"Invalid currency\""
                              },
                              "value": "Invalid currency"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2718335151cbdb3bfd598f57fb57a5e4c9043beca709187ef6ada7a9c211c55d",
                                "typeString": "literal_string \"Invalid currency\""
                              }
                            ],
                            "id": 5181,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1584:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1584:57:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5188,
                        "nodeType": "ExpressionStatement",
                        "src": "1584:57:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 5192,
                                    "name": "cashGroup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5175,
                                    "src": "1897:9:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CashGroupSettings_$4929_memory_ptr",
                                      "typeString": "struct CashGroupSettings memory"
                                    }
                                  },
                                  "id": 5193,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maxMarketIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4906,
                                  "src": "1897:24:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "id": 5194,
                                  "name": "maturity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5167,
                                  "src": "1923:8:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 5195,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "1933:5:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 5196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "1933:15:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5190,
                                  "name": "DateTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4373,
                                  "src": "1872:8:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                    "typeString": "type(library DateTime)"
                                  }
                                },
                                "id": 5191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isValidMaturity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4118,
                                "src": "1872:24:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                                }
                              },
                              "id": 5197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1872:77:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964206d61747572697479",
                              "id": 5198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1963:18:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e",
                                "typeString": "literal_string \"Invalid maturity\""
                              },
                              "value": "Invalid maturity"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6ac8fa1ec1f45f2a4a2017eedf59db09ad3fe10b2748a8ca73a4b71f86bef54e",
                                "typeString": "literal_string \"Invalid maturity\""
                              }
                            ],
                            "id": 5189,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1851:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1851:140:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5200,
                        "nodeType": "ExpressionStatement",
                        "src": "1851:140:36"
                      },
                      {
                        "expression": {
                          "id": 5209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5201,
                            "name": "_fCashId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5141,
                            "src": "2044:8:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5204,
                                "name": "currencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5165,
                                "src": "2084:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "id": 5205,
                                "name": "maturity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5167,
                                "src": "2096:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              {
                                "expression": {
                                  "id": 5206,
                                  "name": "Constants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3949,
                                  "src": "2106:9:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                    "typeString": "type(library Constants)"
                                  }
                                },
                                "id": 5207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "FCASH_ASSET_TYPE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3933,
                                "src": "2106:26:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "expression": {
                                "id": 5202,
                                "name": "EncodeDecode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4826,
                                "src": "2055:12:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                  "typeString": "type(library EncodeDecode)"
                                }
                              },
                              "id": 5203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "encodeERC1155Id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4494,
                              "src": "2055:28:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2055:78:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2044:89:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5210,
                        "nodeType": "ExpressionStatement",
                        "src": "2044:89:36"
                      },
                      {
                        "assignments": [
                          5213,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5213,
                            "mutability": "mutable",
                            "name": "underlyingToken",
                            "nameLocation": "2152:15:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5325,
                            "src": "2145:22:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2763",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "id": 5212,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5211,
                                "name": "IERC20",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2763,
                                "src": "2145:6:36"
                              },
                              "referencedDeclaration": 2763,
                              "src": "2145:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 5216,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5214,
                            "name": "getUnderlyingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5489,
                            "src": "2178:18:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$2763_$_t_int256_$",
                              "typeString": "function () view returns (contract IERC20,int256)"
                            }
                          },
                          "id": 5215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2178:20:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$",
                            "typeString": "tuple(contract IERC20,int256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2144:54:36"
                      },
                      {
                        "assignments": [
                          5219,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5219,
                            "mutability": "mutable",
                            "name": "assetToken",
                            "nameLocation": "2216:10:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5325,
                            "src": "2209:17:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2763",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "id": 5218,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5217,
                                "name": "IERC20",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2763,
                                "src": "2209:6:36"
                              },
                              "referencedDeclaration": 2763,
                              "src": "2209:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 5222,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5220,
                            "name": "getAssetToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5522,
                            "src": "2244:13:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$2763_$_t_int256_$_t_enum$_TokenType_$4834_$",
                              "typeString": "function () view returns (contract IERC20,int256,enum TokenType)"
                            }
                          },
                          "id": 5221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2244:15:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$_t_enum$_TokenType_$4834_$",
                            "typeString": "tuple(contract IERC20,int256,enum TokenType)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2208:51:36"
                      },
                      {
                        "assignments": [
                          5224
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5224,
                            "mutability": "mutable",
                            "name": "_symbol",
                            "nameLocation": "2284:7:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5325,
                            "src": "2270:21:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 5223,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2270:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5242,
                        "initialValue": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 5227,
                                  "name": "underlyingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5213,
                                  "src": "2302:15:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 5226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2294:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5225,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2294:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2294:24:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 5229,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "2322:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 5230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETH_ADDRESS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3871,
                              "src": "2322:21:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "2294:49:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5236,
                                        "name": "underlyingToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5213,
                                        "src": "2401:15:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2763",
                                          "typeString": "contract IERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC20_$2763",
                                          "typeString": "contract IERC20"
                                        }
                                      ],
                                      "id": 5235,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2393:7:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5234,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2393:7:36",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2393:24:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5233,
                                  "name": "IERC20Metadata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2788,
                                  "src": "2378:14:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Metadata_$2788_$",
                                    "typeString": "type(contract IERC20Metadata)"
                                  }
                                },
                                "id": 5238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2378:40:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Metadata_$2788",
                                  "typeString": "contract IERC20Metadata"
                                }
                              },
                              "id": 5239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "symbol",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2781,
                              "src": "2378:47:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                "typeString": "function () view external returns (string memory)"
                              }
                            },
                            "id": 5240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2378:49:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "id": 5241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "2294:133:36",
                          "trueExpression": {
                            "hexValue": "455448",
                            "id": 5232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2358:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aaaebeba3810b1e6b70781f14b2d72c1cb89c0b2b320c43bb67ff79f562f5ff4",
                              "typeString": "literal_string \"ETH\""
                            },
                            "value": "ETH"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2270:157:36"
                      },
                      {
                        "assignments": [
                          5244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5244,
                            "mutability": "mutable",
                            "name": "_maturity",
                            "nameLocation": "2452:9:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5325,
                            "src": "2438:23:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 5243,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2438:6:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5249,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5247,
                              "name": "maturity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5167,
                              "src": "2481:8:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "expression": {
                              "id": 5245,
                              "name": "Strings",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3862,
                              "src": "2464:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Strings_$3862_$",
                                "typeString": "type(library Strings)"
                              }
                            },
                            "id": 5246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toString",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3744,
                            "src": "2464:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (string memory)"
                            }
                          },
                          "id": 5248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2464:26:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2438:52:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "577261707065642066",
                                      "id": 5255,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2572:11:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b",
                                        "typeString": "literal_string \"Wrapped f\""
                                      },
                                      "value": "Wrapped f"
                                    },
                                    {
                                      "id": 5256,
                                      "name": "_symbol",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5224,
                                      "src": "2585:7:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "hexValue": "204020",
                                      "id": 5257,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2594:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd",
                                        "typeString": "literal_string \" @ \""
                                      },
                                      "value": " @ "
                                    },
                                    {
                                      "id": 5258,
                                      "name": "_maturity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5244,
                                      "src": "2601:9:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_849e464c08e2086cf235bcbd4b57d6fe3fe1c1aca56885d1431067b7dc61f93b",
                                        "typeString": "literal_string \"Wrapped f\""
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_2c3200f4edc2c01ccee22475697dfe50b9ca53f27d2a6f3e6014157ea1ed7cbd",
                                        "typeString": "literal_string \" @ \""
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5253,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2555:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2555:16:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2555:56:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2548:6:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": {
                                  "id": 5251,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2548:6:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2548:64:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "7766",
                                      "id": 5265,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2672:4:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476",
                                        "typeString": "literal_string \"wf\""
                                      },
                                      "value": "wf"
                                    },
                                    {
                                      "id": 5266,
                                      "name": "_symbol",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5224,
                                      "src": "2678:7:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "hexValue": "3a",
                                      "id": 5267,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2687:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                        "typeString": "literal_string \":\""
                                      },
                                      "value": ":"
                                    },
                                    {
                                      "id": 5268,
                                      "name": "_maturity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5244,
                                      "src": "2692:9:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_f756ecae7050c8263161c7e1b08956cee06eb1785bf3c5a69fac5229a9f09476",
                                        "typeString": "literal_string \"wf\""
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                        "typeString": "literal_string \":\""
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5263,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2655:3:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "2655:16:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2655:47:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2648:6:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": {
                                  "id": 5261,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2648:6:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2648:55:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2767:1:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "2753:13:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (address[] memory)"
                                },
                                "typeName": {
                                  "baseType": {
                                    "id": 5271,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2757:7:36",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 5272,
                                  "nodeType": "ArrayTypeName",
                                  "src": "2757:9:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                  }
                                }
                              },
                              "id": 5275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2753:16:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "id": 5250,
                            "name": "__ERC777_init",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 244,
                            "src": "2501:13:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (string memory,string memory,address[] memory)"
                            }
                          },
                          "id": 5276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2501:278:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5277,
                        "nodeType": "ExpressionStatement",
                        "src": "2501:278:36"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5283,
                                  "name": "NotionalV2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5135,
                                  "src": "2991:10:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                    "typeString": "contract INotionalV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                    "typeString": "contract INotionalV2"
                                  }
                                ],
                                "id": 5282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2983:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5281,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2983:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2983:19:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3009:7:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 5286,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3009:7:36",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 5285,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3004:4:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3004:13:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 5289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "3004:17:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5278,
                              "name": "assetToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5219,
                              "src": "2960:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2889,
                            "src": "2960:22:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2763_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 5290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2960:62:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5291,
                        "nodeType": "ExpressionStatement",
                        "src": "2960:62:36"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 5294,
                                  "name": "assetToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5219,
                                  "src": "3057:10:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 5293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3049:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5292,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3049:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3049:19:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 5298,
                                  "name": "underlyingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5213,
                                  "src": "3080:15:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 5297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3072:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5296,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3072:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3072:24:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3049:47:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 5303,
                                  "name": "underlyingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5213,
                                  "src": "3120:15:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 5302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3112:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5301,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3112:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3112:24:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 5305,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "3140:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 5306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETH_ADDRESS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3871,
                              "src": "3140:21:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3112:49:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3049:112:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5324,
                        "nodeType": "IfStatement",
                        "src": "3032:232:36",
                        "trueBody": {
                          "id": 5323,
                          "nodeType": "Block",
                          "src": "3172:92:36",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5314,
                                        "name": "NotionalV2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5135,
                                        "src": "3222:10:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                          "typeString": "contract INotionalV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                          "typeString": "contract INotionalV2"
                                        }
                                      ],
                                      "id": 5313,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3214:7:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5312,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3214:7:36",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3214:19:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5318,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3240:7:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 5317,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3240:7:36",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          }
                                        ],
                                        "id": 5316,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "3235:4:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 5319,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3235:13:36",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint256",
                                        "typeString": "type(uint256)"
                                      }
                                    },
                                    "id": 5320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "3235:17:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5309,
                                    "name": "underlyingToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5213,
                                    "src": "3186:15:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 5311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeApprove",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2889,
                                  "src": "3186:27:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2763_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 5321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3186:67:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5322,
                              "nodeType": "ExpressionStatement",
                              "src": "3186:67:36"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5163,
                    "nodeType": "StructuredDocumentation",
                    "src": "1343:58:36",
                    "text": "@notice Initializes a proxy for a specific fCash asset"
                  },
                  "functionSelector": "152b838c",
                  "id": 5326,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 5171,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 5170,
                        "name": "initializer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 47,
                        "src": "1480:11:36"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1480:11:36"
                    }
                  ],
                  "name": "initialize",
                  "nameLocation": "1415:10:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5169,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1471:8:36"
                  },
                  "parameters": {
                    "id": 5168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5165,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1433:10:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5326,
                        "src": "1426:17:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5164,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1426:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5167,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1452:8:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5326,
                        "src": "1445:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 5166,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "1445:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1425:36:36"
                  },
                  "returnParameters": {
                    "id": 5172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1492:0:36"
                  },
                  "scope": 5560,
                  "src": "1406:1864:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7552
                  ],
                  "body": {
                    "id": 5335,
                    "nodeType": "Block",
                    "src": "3398:32:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 5333,
                          "name": "_fCashId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5141,
                          "src": "3415:8:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5332,
                        "id": 5334,
                        "nodeType": "Return",
                        "src": "3408:15:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5327,
                    "nodeType": "StructuredDocumentation",
                    "src": "3276:56:36",
                    "text": "@notice Returns the underlying fCash ID of the token"
                  },
                  "functionSelector": "0558d500",
                  "id": 5336,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getfCashId",
                  "nameLocation": "3346:10:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5329,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3371:8:36"
                  },
                  "parameters": {
                    "id": 5328,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3356:2:36"
                  },
                  "returnParameters": {
                    "id": 5332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5331,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5336,
                        "src": "3389:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5330,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3389:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3388:9:36"
                  },
                  "scope": 5560,
                  "src": "3337:93:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7558
                  ],
                  "body": {
                    "id": 5351,
                    "nodeType": "Block",
                    "src": "3573:82:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 5349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              {
                                "id": 5343,
                                "name": "maturity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5341,
                                "src": "3591:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              null
                            ],
                            "id": 5344,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3583:24:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint40_$__$",
                              "typeString": "tuple(,uint40,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5347,
                                "name": "_fCashId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5141,
                                "src": "3639:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 5345,
                                "name": "EncodeDecode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4826,
                                "src": "3610:12:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                  "typeString": "type(library EncodeDecode)"
                                }
                              },
                              "id": 5346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decodeERC1155Id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4415,
                              "src": "3610:28:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint16_$_t_uint40_$_t_uint8_$",
                                "typeString": "function (uint256) pure returns (uint16,uint40,uint8)"
                              }
                            },
                            "id": 5348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3610:38:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$_t_uint8_$",
                              "typeString": "tuple(uint16,uint40,uint8)"
                            }
                          },
                          "src": "3583:65:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5350,
                        "nodeType": "ExpressionStatement",
                        "src": "3583:65:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5337,
                    "nodeType": "StructuredDocumentation",
                    "src": "3436:62:36",
                    "text": "@notice Returns the underlying fCash maturity of the token"
                  },
                  "functionSelector": "e16695b5",
                  "id": 5352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaturity",
                  "nameLocation": "3512:11:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5339,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3538:8:36"
                  },
                  "parameters": {
                    "id": 5338,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3523:2:36"
                  },
                  "returnParameters": {
                    "id": 5342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5341,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "3563:8:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5352,
                        "src": "3556:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 5340,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "3556:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3555:17:36"
                  },
                  "scope": 5560,
                  "src": "3503:152:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7564
                  ],
                  "body": {
                    "id": 5365,
                    "nodeType": "Block",
                    "src": "3806:56:36",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5359,
                              "name": "getMaturity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5352,
                              "src": "3823:11:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint40_$",
                                "typeString": "function () view returns (uint40)"
                              }
                            },
                            "id": 5360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3823:13:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "expression": {
                              "id": 5361,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "3840:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "3840:15:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3823:32:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5358,
                        "id": 5364,
                        "nodeType": "Return",
                        "src": "3816:39:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5353,
                    "nodeType": "StructuredDocumentation",
                    "src": "3661:82:36",
                    "text": "@notice True if the fCash has matured, assets mature exactly on the block time"
                  },
                  "functionSelector": "a1093295",
                  "id": 5366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hasMatured",
                  "nameLocation": "3757:10:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5355,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3782:8:36"
                  },
                  "parameters": {
                    "id": 5354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3767:2:36"
                  },
                  "returnParameters": {
                    "id": 5358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5357,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5366,
                        "src": "3800:4:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5356,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3800:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3799:6:36"
                  },
                  "scope": 5560,
                  "src": "3748:114:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7570
                  ],
                  "body": {
                    "id": 5381,
                    "nodeType": "Block",
                    "src": "3996:84:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 5379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 5373,
                                "name": "currencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5371,
                                "src": "4007:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              null,
                              null
                            ],
                            "id": 5374,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4006:26:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint16_$__$__$",
                              "typeString": "tuple(uint16,,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5377,
                                "name": "_fCashId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5141,
                                "src": "4064:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 5375,
                                "name": "EncodeDecode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4826,
                                "src": "4035:12:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                  "typeString": "type(library EncodeDecode)"
                                }
                              },
                              "id": 5376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decodeERC1155Id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4415,
                              "src": "4035:28:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint16_$_t_uint40_$_t_uint8_$",
                                "typeString": "function (uint256) pure returns (uint16,uint40,uint8)"
                              }
                            },
                            "id": 5378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4035:38:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$_t_uint8_$",
                              "typeString": "tuple(uint16,uint40,uint8)"
                            }
                          },
                          "src": "4006:67:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5380,
                        "nodeType": "ExpressionStatement",
                        "src": "4006:67:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5367,
                    "nodeType": "StructuredDocumentation",
                    "src": "3868:49:36",
                    "text": "@notice Returns the underlying fCash currency"
                  },
                  "functionSelector": "cf387fed",
                  "id": 5382,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrencyId",
                  "nameLocation": "3931:13:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5369,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3959:8:36"
                  },
                  "parameters": {
                    "id": 5368,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3944:2:36"
                  },
                  "returnParameters": {
                    "id": 5372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5371,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "3984:10:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5382,
                        "src": "3977:17:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5370,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "3977:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3976:19:36"
                  },
                  "scope": 5560,
                  "src": "3922:158:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7578
                  ],
                  "body": {
                    "id": 5400,
                    "nodeType": "Block",
                    "src": "4232:87:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 5398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 5391,
                                "name": "currencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5387,
                                "src": "4243:10:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              {
                                "id": 5392,
                                "name": "maturity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5389,
                                "src": "4255:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              null
                            ],
                            "id": 5393,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4242:29:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$__$",
                              "typeString": "tuple(uint16,uint40,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5396,
                                "name": "_fCashId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5141,
                                "src": "4303:8:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 5394,
                                "name": "EncodeDecode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4826,
                                "src": "4274:12:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                  "typeString": "type(library EncodeDecode)"
                                }
                              },
                              "id": 5395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decodeERC1155Id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4415,
                              "src": "4274:28:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint16_$_t_uint40_$_t_uint8_$",
                                "typeString": "function (uint256) pure returns (uint16,uint40,uint8)"
                              }
                            },
                            "id": 5397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4274:38:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$_t_uint8_$",
                              "typeString": "tuple(uint16,uint40,uint8)"
                            }
                          },
                          "src": "4242:70:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5399,
                        "nodeType": "ExpressionStatement",
                        "src": "4242:70:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5383,
                    "nodeType": "StructuredDocumentation",
                    "src": "4086:51:36",
                    "text": "@notice Returns the components of the fCash idd"
                  },
                  "functionSelector": "48d8f98d",
                  "id": 5401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDecodedID",
                  "nameLocation": "4151:12:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5385,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4178:8:36"
                  },
                  "parameters": {
                    "id": 5384,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4163:2:36"
                  },
                  "returnParameters": {
                    "id": 5390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5387,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "4203:10:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5401,
                        "src": "4196:17:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 5386,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4196:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5389,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "4222:8:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5401,
                        "src": "4215:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 5388,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "4215:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4195:36:36"
                  },
                  "scope": 5560,
                  "src": "4142:177:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    351
                  ],
                  "body": {
                    "id": 5410,
                    "nodeType": "Block",
                    "src": "4446:25:36",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "38",
                          "id": 5408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4463:1:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "8"
                        },
                        "functionReturnParameters": 5407,
                        "id": 5409,
                        "nodeType": "Return",
                        "src": "4456:8:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5402,
                    "nodeType": "StructuredDocumentation",
                    "src": "4325:59:36",
                    "text": "@notice fCash is always denominated in 8 decimal places"
                  },
                  "functionSelector": "313ce567",
                  "id": 5411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "4398:8:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5404,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4421:8:36"
                  },
                  "parameters": {
                    "id": 5403,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4406:2:36"
                  },
                  "returnParameters": {
                    "id": 5407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5406,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5411,
                        "src": "4439:5:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5405,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4439:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4438:7:36"
                  },
                  "scope": 5560,
                  "src": "4389:82:36",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7584
                  ],
                  "body": {
                    "id": 5441,
                    "nodeType": "Block",
                    "src": "4693:343:36",
                    "statements": [
                      {
                        "assignments": [
                          5419,
                          5421
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5419,
                            "mutability": "mutable",
                            "name": "marketIndex",
                            "nameLocation": "4712:11:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5441,
                            "src": "4704:19:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5418,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4704:7:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5421,
                            "mutability": "mutable",
                            "name": "isIdiosyncratic",
                            "nameLocation": "4730:15:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5441,
                            "src": "4725:20:36",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5420,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4725:4:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5431,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5424,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "4786:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 5425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_TRADED_MARKET_INDEX",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3877,
                              "src": "4786:33:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5426,
                                "name": "getMaturity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5352,
                                "src": "4833:11:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint40_$",
                                  "typeString": "function () view returns (uint40)"
                                }
                              },
                              "id": 5427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4833:13:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            {
                              "expression": {
                                "id": 5428,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "4860:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "4860:15:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5422,
                              "name": "DateTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4373,
                              "src": "4749:8:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DateTime_$4373_$",
                                "typeString": "type(library DateTime)"
                              }
                            },
                            "id": 5423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getMarketIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4196,
                            "src": "4749:23:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256,bool)"
                            }
                          },
                          "id": 5430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4749:136:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4703:182:36"
                      },
                      {
                        "condition": {
                          "id": 5432,
                          "name": "isIdiosyncratic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5421,
                          "src": "4900:15:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5435,
                        "nodeType": "IfStatement",
                        "src": "4896:29:36",
                        "trueBody": {
                          "expression": {
                            "hexValue": "30",
                            "id": 5433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4924:1:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "functionReturnParameters": 5417,
                          "id": 5434,
                          "nodeType": "Return",
                          "src": "4917:8:36"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5438,
                              "name": "marketIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5419,
                              "src": "5017:11:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5011:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 5436,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "5011:5:36",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5011:18:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 5417,
                        "id": 5440,
                        "nodeType": "Return",
                        "src": "5004:25:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5412,
                    "nodeType": "StructuredDocumentation",
                    "src": "4477:148:36",
                    "text": "@notice Returns the current market index for this fCash asset. If this returns\n zero that means it is idiosyncratic and cannot be traded."
                  },
                  "functionSelector": "cb803ceb",
                  "id": 5442,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketIndex",
                  "nameLocation": "4639:14:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5414,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4668:8:36"
                  },
                  "parameters": {
                    "id": 5413,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4653:2:36"
                  },
                  "returnParameters": {
                    "id": 5417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5416,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5442,
                        "src": "4686:5:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5415,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4686:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4685:7:36"
                  },
                  "scope": 5560,
                  "src": "4630:406:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7593
                  ],
                  "body": {
                    "id": 5488,
                    "nodeType": "Block",
                    "src": "5359:390:36",
                    "statements": [
                      {
                        "assignments": [
                          5454,
                          5457
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5454,
                            "mutability": "mutable",
                            "name": "asset",
                            "nameLocation": "5383:5:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5488,
                            "src": "5370:18:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                              "typeString": "struct Token"
                            },
                            "typeName": {
                              "id": 5453,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5452,
                                "name": "Token",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4890,
                                "src": "5370:5:36"
                              },
                              "referencedDeclaration": 4890,
                              "src": "5370:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$4890_storage_ptr",
                                "typeString": "struct Token"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5457,
                            "mutability": "mutable",
                            "name": "underlying",
                            "nameLocation": "5403:10:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5488,
                            "src": "5390:23:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                              "typeString": "struct Token"
                            },
                            "typeName": {
                              "id": 5456,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5455,
                                "name": "Token",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4890,
                                "src": "5390:5:36"
                              },
                              "referencedDeclaration": 4890,
                              "src": "5390:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$4890_storage_ptr",
                                "typeString": "struct Token"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5463,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5460,
                                "name": "getCurrencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5382,
                                "src": "5440:13:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                                  "typeString": "function () view returns (uint16)"
                                }
                              },
                              "id": 5461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5440:15:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "id": 5458,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "5417:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 5459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrency",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7278,
                            "src": "5417:22:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_struct$_Token_$4890_memory_ptr_$_t_struct$_Token_$4890_memory_ptr_$",
                              "typeString": "function (uint16) view external returns (struct Token memory,struct Token memory)"
                            }
                          },
                          "id": 5462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5417:39:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_struct$_Token_$4890_memory_ptr_$_t_struct$_Token_$4890_memory_ptr_$",
                            "typeString": "tuple(struct Token memory,struct Token memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5369:87:36"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_TokenType_$4834",
                            "typeString": "enum TokenType"
                          },
                          "id": 5468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5464,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5454,
                              "src": "5471:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                "typeString": "struct Token memory"
                              }
                            },
                            "id": 5465,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4887,
                            "src": "5471:15:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_TokenType_$4834",
                              "typeString": "enum TokenType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 5466,
                              "name": "TokenType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4834,
                              "src": "5490:9:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_TokenType_$4834_$",
                                "typeString": "type(enum TokenType)"
                              }
                            },
                            "id": 5467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NonMintable",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4833,
                            "src": "5490:21:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_TokenType_$4834",
                              "typeString": "enum TokenType"
                            }
                          },
                          "src": "5471:40:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5486,
                          "nodeType": "Block",
                          "src": "5657:86:36",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 5479,
                                          "name": "underlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5457,
                                          "src": "5686:10:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                            "typeString": "struct Token memory"
                                          }
                                        },
                                        "id": 5480,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "tokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4880,
                                        "src": "5686:23:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 5478,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2763,
                                      "src": "5679:6:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 5481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5679:31:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5482,
                                      "name": "underlying",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5457,
                                      "src": "5712:10:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                        "typeString": "struct Token memory"
                                      }
                                    },
                                    "id": 5483,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "decimals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4884,
                                    "src": "5712:19:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 5484,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5678:54:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$",
                                  "typeString": "tuple(contract IERC20,int256)"
                                }
                              },
                              "functionReturnParameters": 5451,
                              "id": 5485,
                              "nodeType": "Return",
                              "src": "5671:61:36"
                            }
                          ]
                        },
                        "id": 5487,
                        "nodeType": "IfStatement",
                        "src": "5467:276:36",
                        "trueBody": {
                          "id": 5477,
                          "nodeType": "Block",
                          "src": "5513:138:36",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 5470,
                                          "name": "asset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5454,
                                          "src": "5604:5:36",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                            "typeString": "struct Token memory"
                                          }
                                        },
                                        "id": 5471,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "tokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4880,
                                        "src": "5604:18:36",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 5469,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2763,
                                      "src": "5597:6:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 5472,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5597:26:36",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5473,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5454,
                                      "src": "5625:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                        "typeString": "struct Token memory"
                                      }
                                    },
                                    "id": 5474,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "decimals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4884,
                                    "src": "5625:14:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 5475,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5596:44:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$",
                                  "typeString": "tuple(contract IERC20,int256)"
                                }
                              },
                              "functionReturnParameters": 5451,
                              "id": 5476,
                              "nodeType": "Return",
                              "src": "5589:51:36"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5443,
                    "nodeType": "StructuredDocumentation",
                    "src": "5042:200:36",
                    "text": "@notice Returns the token and precision of the token that this token settles\n to. For example, fUSDC will return the USDC token address and 1e6. The zero\n address will represent ETH."
                  },
                  "functionSelector": "ee719bc8",
                  "id": 5489,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnderlyingToken",
                  "nameLocation": "5256:18:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5445,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5289:8:36"
                  },
                  "parameters": {
                    "id": 5444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5274:2:36"
                  },
                  "returnParameters": {
                    "id": 5451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5448,
                        "mutability": "mutable",
                        "name": "underlyingToken",
                        "nameLocation": "5314:15:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5489,
                        "src": "5307:22:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 5447,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5446,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "5307:6:36"
                          },
                          "referencedDeclaration": 2763,
                          "src": "5307:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5450,
                        "mutability": "mutable",
                        "name": "underlyingPrecision",
                        "nameLocation": "5338:19:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5489,
                        "src": "5331:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5449,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5331:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5306:52:36"
                  },
                  "scope": 5560,
                  "src": "5247:502:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7605
                  ],
                  "body": {
                    "id": 5521,
                    "nodeType": "Block",
                    "src": "6018:188:36",
                    "statements": [
                      {
                        "assignments": [
                          5504,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5504,
                            "mutability": "mutable",
                            "name": "asset",
                            "nameLocation": "6042:5:36",
                            "nodeType": "VariableDeclaration",
                            "scope": 5521,
                            "src": "6029:18:36",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                              "typeString": "struct Token"
                            },
                            "typeName": {
                              "id": 5503,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5502,
                                "name": "Token",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4890,
                                "src": "6029:5:36"
                              },
                              "referencedDeclaration": 4890,
                              "src": "6029:5:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Token_$4890_storage_ptr",
                                "typeString": "struct Token"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 5510,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5507,
                                "name": "getCurrencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5382,
                                "src": "6105:13:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                                  "typeString": "function () view returns (uint16)"
                                }
                              },
                              "id": 5508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6105:15:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "id": 5505,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "6082:10:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 5506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getCurrency",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7278,
                            "src": "6082:22:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint16_$returns$_t_struct$_Token_$4890_memory_ptr_$_t_struct$_Token_$4890_memory_ptr_$",
                              "typeString": "function (uint16) view external returns (struct Token memory,struct Token memory)"
                            }
                          },
                          "id": 5509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6082:39:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_struct$_Token_$4890_memory_ptr_$_t_struct$_Token_$4890_memory_ptr_$",
                            "typeString": "tuple(struct Token memory,struct Token memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6028:93:36"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 5512,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5504,
                                    "src": "6146:5:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                      "typeString": "struct Token memory"
                                    }
                                  },
                                  "id": 5513,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4880,
                                  "src": "6146:18:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5511,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2763,
                                "src": "6139:6:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 5514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6139:26:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "expression": {
                                "id": 5515,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5504,
                                "src": "6167:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                  "typeString": "struct Token memory"
                                }
                              },
                              "id": 5516,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decimals",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4884,
                              "src": "6167:14:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "expression": {
                                "id": 5517,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5504,
                                "src": "6183:5:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                                  "typeString": "struct Token memory"
                                }
                              },
                              "id": 5518,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4887,
                              "src": "6183:15:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_TokenType_$4834",
                                "typeString": "enum TokenType"
                              }
                            }
                          ],
                          "id": 5519,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6138:61:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$_t_enum$_TokenType_$4834_$",
                            "typeString": "tuple(contract IERC20,int256,enum TokenType)"
                          }
                        },
                        "functionReturnParameters": 5501,
                        "id": 5520,
                        "nodeType": "Return",
                        "src": "6131:68:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5490,
                    "nodeType": "StructuredDocumentation",
                    "src": "5755:135:36",
                    "text": "@notice Returns the asset token which the fCash settles to. This will be an interest\n bearing token like a cToken or aToken."
                  },
                  "functionSelector": "f8eef10f",
                  "id": 5522,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetToken",
                  "nameLocation": "5904:13:36",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5492,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5932:8:36"
                  },
                  "parameters": {
                    "id": 5491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5917:2:36"
                  },
                  "returnParameters": {
                    "id": 5501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5495,
                        "mutability": "mutable",
                        "name": "assetToken",
                        "nameLocation": "5957:10:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5522,
                        "src": "5950:17:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 5494,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5493,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "5950:6:36"
                          },
                          "referencedDeclaration": 2763,
                          "src": "5950:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5497,
                        "mutability": "mutable",
                        "name": "underlyingPrecision",
                        "nameLocation": "5976:19:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5522,
                        "src": "5969:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5496,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5969:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5500,
                        "mutability": "mutable",
                        "name": "tokenType",
                        "nameLocation": "6007:9:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5522,
                        "src": "5997:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TokenType_$4834",
                          "typeString": "enum TokenType"
                        },
                        "typeName": {
                          "id": 5499,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5498,
                            "name": "TokenType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4834,
                            "src": "5997:9:36"
                          },
                          "referencedDeclaration": 4834,
                          "src": "5997:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TokenType_$4834",
                            "typeString": "enum TokenType"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5949:68:36"
                  },
                  "scope": 5560,
                  "src": "5895:311:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5558,
                    "nodeType": "Block",
                    "src": "6297:224:36",
                    "statements": [
                      {
                        "condition": {
                          "id": 5532,
                          "name": "useUnderlying",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5524,
                          "src": "6311:13:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5546,
                          "nodeType": "Block",
                          "src": "6394:64:36",
                          "statements": [
                            {
                              "expression": {
                                "id": 5544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 5540,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5528,
                                      "src": "6409:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2763",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    null,
                                    null
                                  ],
                                  "id": 5541,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "6408:21:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$__$__$",
                                    "typeString": "tuple(contract IERC20,,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5542,
                                    "name": "getAssetToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5522,
                                    "src": "6432:13:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$2763_$_t_int256_$_t_enum$_TokenType_$4834_$",
                                      "typeString": "function () view returns (contract IERC20,int256,enum TokenType)"
                                    }
                                  },
                                  "id": 5543,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6432:15:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$_t_enum$_TokenType_$4834_$",
                                    "typeString": "tuple(contract IERC20,int256,enum TokenType)"
                                  }
                                },
                                "src": "6408:39:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5545,
                              "nodeType": "ExpressionStatement",
                              "src": "6408:39:36"
                            }
                          ]
                        },
                        "id": 5547,
                        "nodeType": "IfStatement",
                        "src": "6307:151:36",
                        "trueBody": {
                          "id": 5539,
                          "nodeType": "Block",
                          "src": "6326:62:36",
                          "statements": [
                            {
                              "expression": {
                                "id": 5537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 5533,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5528,
                                      "src": "6341:5:36",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2763",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    null
                                  ],
                                  "id": 5534,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "6340:14:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$__$",
                                    "typeString": "tuple(contract IERC20,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5535,
                                    "name": "getUnderlyingToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5489,
                                    "src": "6357:18:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$2763_$_t_int256_$",
                                      "typeString": "function () view returns (contract IERC20,int256)"
                                    }
                                  },
                                  "id": 5536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6357:20:36",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$",
                                    "typeString": "tuple(contract IERC20,int256)"
                                  }
                                },
                                "src": "6340:37:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5538,
                              "nodeType": "ExpressionStatement",
                              "src": "6340:37:36"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 5556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5548,
                            "name": "isETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5530,
                            "src": "6467:5:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 5551,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5528,
                                  "src": "6483:5:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$2763",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 5550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6475:7:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5549,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6475:7:36",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6475:14:36",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 5553,
                                "name": "Constants",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3949,
                                "src": "6493:9:36",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                  "typeString": "type(library Constants)"
                                }
                              },
                              "id": 5554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ETH_ADDRESS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3871,
                              "src": "6493:21:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "6475:39:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6467:47:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5557,
                        "nodeType": "ExpressionStatement",
                        "src": "6467:47:36"
                      }
                    ]
                  },
                  "functionSelector": "51489551",
                  "id": 5559,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getToken",
                  "nameLocation": "6221:8:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5524,
                        "mutability": "mutable",
                        "name": "useUnderlying",
                        "nameLocation": "6235:13:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5559,
                        "src": "6230:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5523,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6230:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6229:20:36"
                  },
                  "returnParameters": {
                    "id": 5531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5528,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "6278:5:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5559,
                        "src": "6271:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 5527,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5526,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "6271:6:36"
                          },
                          "referencedDeclaration": 2763,
                          "src": "6271:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5530,
                        "mutability": "mutable",
                        "name": "isETH",
                        "nameLocation": "6290:5:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5559,
                        "src": "6285:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5529,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6285:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6270:26:36"
                  },
                  "scope": 5560,
                  "src": "6212:309:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5561,
              "src": "625:5898:36",
              "usedErrors": []
            }
          ],
          "src": "32:6492:36"
        },
        "id": 36
      },
      "wrapped-fcash/contracts/wfCashERC4626.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/wfCashERC4626.sol",
          "exportedSymbols": {
            "AccountBalance": [
              4951
            ],
            "AccountContext": [
              4940
            ],
            "Address": [
              3466
            ],
            "AddressUpgradeable": [
              1785
            ],
            "AssetRateParameters": [
              4958
            ],
            "AssetStorageState": [
              4853
            ],
            "BalanceActionWithTrades": [
              4878
            ],
            "BatchLend": [
              4861
            ],
            "CashGroupSettings": [
              4929
            ],
            "Constants": [
              3949
            ],
            "ContextUpgradeable": [
              1827
            ],
            "DateTime": [
              4373
            ],
            "DepositActionType": [
              4849
            ],
            "ERC777Upgradeable": [
              1343
            ],
            "EncodeDecode": [
              4826
            ],
            "IERC1820RegistryUpgradeable": [
              1917
            ],
            "IERC20": [
              2763
            ],
            "IERC20Metadata": [
              2788
            ],
            "IERC20Upgradeable": [
              151
            ],
            "IERC4626": [
              7243
            ],
            "IERC777": [
              3171
            ],
            "IERC777RecipientUpgradeable": [
              1363
            ],
            "IERC777SenderUpgradeable": [
              1383
            ],
            "IERC777Upgradeable": [
              1542
            ],
            "INotionalV2": [
              7474
            ],
            "IWETH9": [
              7263
            ],
            "IWrappedfCash": [
              7606
            ],
            "IWrappedfCashComplete": [
              7613
            ],
            "Initializable": [
              73
            ],
            "PortfolioAsset": [
              4904
            ],
            "ReentrancyGuard": [
              2685
            ],
            "SafeERC20": [
              3012
            ],
            "Strings": [
              3862
            ],
            "Token": [
              4890
            ],
            "TokenType": [
              4834
            ],
            "TradeActionType": [
              4841
            ],
            "wfCashBase": [
              5560
            ],
            "wfCashERC4626": [
              6281
            ],
            "wfCashLogic": [
              7082
            ]
          },
          "id": 6282,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5562,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:37"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/wfCashLogic.sol",
              "file": "./wfCashLogic.sol",
              "id": 5563,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6282,
              "sourceUnit": 7083,
              "src": "57:27:37",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/IERC4626.sol",
              "file": "../interfaces/IERC4626.sol",
              "id": 5564,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6282,
              "sourceUnit": 7244,
              "src": "85:36:37",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5565,
                    "name": "IERC4626",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7243,
                    "src": "149:8:37"
                  },
                  "id": 5566,
                  "nodeType": "InheritanceSpecifier",
                  "src": "149:8:37"
                },
                {
                  "baseName": {
                    "id": 5567,
                    "name": "wfCashLogic",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7082,
                    "src": "159:11:37"
                  },
                  "id": 5568,
                  "nodeType": "InheritanceSpecifier",
                  "src": "159:11:37"
                }
              ],
              "canonicalName": "wfCashERC4626",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 6281,
              "linearizedBaseContracts": [
                6281,
                7082,
                2685,
                5560,
                7606,
                1343,
                151,
                1542,
                1827,
                73,
                7243
              ],
              "name": "wfCashERC4626",
              "nameLocation": "132:13:37",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5581,
                    "nodeType": "Block",
                    "src": "256:2:37",
                    "statements": []
                  },
                  "id": 5582,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5577,
                          "name": "_notional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5571,
                          "src": "238:9:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        {
                          "id": 5578,
                          "name": "_weth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5574,
                          "src": "249:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        }
                      ],
                      "id": 5579,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5576,
                        "name": "wfCashLogic",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7082,
                        "src": "226:11:37"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "226:29:37"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5571,
                        "mutability": "mutable",
                        "name": "_notional",
                        "nameLocation": "201:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5582,
                        "src": "189:21:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                          "typeString": "contract INotionalV2"
                        },
                        "typeName": {
                          "id": 5570,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5569,
                            "name": "INotionalV2",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7474,
                            "src": "189:11:37"
                          },
                          "referencedDeclaration": 7474,
                          "src": "189:11:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5574,
                        "mutability": "mutable",
                        "name": "_weth",
                        "nameLocation": "219:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5582,
                        "src": "212:12:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH9_$7263",
                          "typeString": "contract IWETH9"
                        },
                        "typeName": {
                          "id": 5573,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5572,
                            "name": "IWETH9",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7263,
                            "src": "212:6:37"
                          },
                          "referencedDeclaration": 7263,
                          "src": "212:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "188:37:37"
                  },
                  "returnParameters": {
                    "id": 5580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "256:0:37"
                  },
                  "scope": 6281,
                  "src": "177:81:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7112
                  ],
                  "body": {
                    "id": 5609,
                    "nodeType": "Block",
                    "src": "357:135:37",
                    "statements": [
                      {
                        "assignments": [
                          5591,
                          5593
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5591,
                            "mutability": "mutable",
                            "name": "underlyingToken",
                            "nameLocation": "375:15:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 5609,
                            "src": "368:22:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2763",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "id": 5590,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5589,
                                "name": "IERC20",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2763,
                                "src": "368:6:37"
                              },
                              "referencedDeclaration": 2763,
                              "src": "368:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5593,
                            "mutability": "mutable",
                            "name": "isETH",
                            "nameLocation": "397:5:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 5609,
                            "src": "392:10:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5592,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "392:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5597,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "74727565",
                              "id": 5595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "415:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5594,
                            "name": "getToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5559,
                            "src": "406:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bool_$returns$_t_contract$_IERC20_$2763_$_t_bool_$",
                              "typeString": "function (bool) view returns (contract IERC20,bool)"
                            }
                          },
                          "id": 5596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "406:14:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_bool_$",
                            "typeString": "tuple(contract IERC20,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "367:53:37"
                      },
                      {
                        "expression": {
                          "condition": {
                            "id": 5598,
                            "name": "isETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5593,
                            "src": "437:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "id": 5605,
                                "name": "underlyingToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5591,
                                "src": "469:15:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 5604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "461:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5603,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "461:7:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "461:24:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "437:48:37",
                          "trueExpression": {
                            "arguments": [
                              {
                                "id": 5601,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5138,
                                "src": "453:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH9_$7263",
                                  "typeString": "contract IWETH9"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IWETH9_$7263",
                                  "typeString": "contract IWETH9"
                                }
                              ],
                              "id": 5600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "445:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5599,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "445:7:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "445:13:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5588,
                        "id": 5608,
                        "nodeType": "Return",
                        "src": "430:55:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5583,
                    "nodeType": "StructuredDocumentation",
                    "src": "264:32:37",
                    "text": "@dev See {IERC4262-asset} "
                  },
                  "functionSelector": "38d52e0f",
                  "id": 5610,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "asset",
                  "nameLocation": "310:5:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5585,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "330:8:37"
                  },
                  "parameters": {
                    "id": 5584,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "315:2:37"
                  },
                  "returnParameters": {
                    "id": 5588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5587,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5610,
                        "src": "348:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "348:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "347:9:37"
                  },
                  "scope": 6281,
                  "src": "301:191:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5652,
                    "nodeType": "Block",
                    "src": "570:625:37",
                    "statements": [
                      {
                        "assignments": [
                          5616
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5616,
                            "mutability": "mutable",
                            "name": "currencyId",
                            "nameLocation": "656:10:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 5652,
                            "src": "649:17:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            "typeName": {
                              "id": 5615,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "649:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5619,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5617,
                            "name": "getCurrencyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5382,
                            "src": "669:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                              "typeString": "function () view returns (uint16)"
                            }
                          },
                          "id": 5618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "669:15:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "649:35:37"
                      },
                      {
                        "assignments": [
                          5621,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5621,
                            "mutability": "mutable",
                            "name": "cashBalance",
                            "nameLocation": "895:11:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 5652,
                            "src": "888:18:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 5620,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "888:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 5630,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5624,
                              "name": "currencyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5616,
                              "src": "953:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5627,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "973:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashERC4626_$6281",
                                    "typeString": "contract wfCashERC4626"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashERC4626_$6281",
                                    "typeString": "contract wfCashERC4626"
                                  }
                                ],
                                "id": 5626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "965:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5625,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "965:7:37",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "965:13:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5622,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "924:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 5623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAccountBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7316,
                            "src": "924:28:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint16_$_t_address_$returns$_t_int256_$_t_int256_$_t_uint256_$",
                              "typeString": "function (uint16,address) view external returns (int256,int256,uint256)"
                            }
                          },
                          "id": 5629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "924:55:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$_t_uint256_$",
                            "typeString": "tuple(int256,int256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "887:92:37"
                      },
                      {
                        "assignments": [
                          5632
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5632,
                            "mutability": "mutable",
                            "name": "underlyingExternal",
                            "nameLocation": "996:18:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 5652,
                            "src": "989:25:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 5631,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "989:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5639,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5635,
                              "name": "currencyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5616,
                              "src": "1057:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "id": 5636,
                              "name": "cashBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5621,
                              "src": "1069:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 5637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1082:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 5633,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "1017:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 5634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "convertCashBalanceToExternal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7411,
                            "src": "1017:39:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint16_$_t_int256_$_t_bool_$returns$_t_int256_$",
                              "typeString": "function (uint16,int256,bool) view external returns (int256)"
                            }
                          },
                          "id": 5638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1017:70:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "989:98:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 5643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5641,
                                "name": "underlyingExternal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5632,
                                "src": "1105:18:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5642,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1126:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1105:22:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d75737420536574746c65",
                              "id": 5644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1129:13:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1",
                                "typeString": "literal_string \"Must Settle\""
                              },
                              "value": "Must Settle"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5850cf9aadcbf84f31177cd5c68b0cce9ed9c071fcb758d1ca8d75993757bcd1",
                                "typeString": "literal_string \"Must Settle\""
                              }
                            ],
                            "id": 5640,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1097:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1097:46:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5646,
                        "nodeType": "ExpressionStatement",
                        "src": "1097:46:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5649,
                              "name": "underlyingExternal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5632,
                              "src": "1169:18:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 5648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1161:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5647,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1161:7:37",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1161:27:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5614,
                        "id": 5651,
                        "nodeType": "Return",
                        "src": "1154:34:37"
                      }
                    ]
                  },
                  "id": 5653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getMaturedUnderlyingExternal",
                  "nameLocation": "507:29:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5611,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "536:2:37"
                  },
                  "returnParameters": {
                    "id": 5614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5613,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5653,
                        "src": "561:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "561:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "560:9:37"
                  },
                  "scope": 6281,
                  "src": "498:697:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    7118
                  ],
                  "body": {
                    "id": 5717,
                    "nodeType": "Block",
                    "src": "1306:879:37",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5660,
                            "name": "hasMatured",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "1320:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1320:12:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5715,
                          "nodeType": "Block",
                          "src": "1403:776:37",
                          "statements": [
                            {
                              "assignments": [
                                null,
                                5667
                              ],
                              "declarations": [
                                null,
                                {
                                  "constant": false,
                                  "id": 5667,
                                  "mutability": "mutable",
                                  "name": "precision",
                                  "nameLocation": "1432:9:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5715,
                                  "src": "1425:16:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 5666,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1425:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5670,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5668,
                                  "name": "getUnderlyingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5489,
                                  "src": "1445:18:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$2763_$_t_int256_$",
                                    "typeString": "function () view returns (contract IERC20,int256)"
                                  }
                                },
                                "id": 5669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1445:20:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_int256_$",
                                  "typeString": "tuple(contract IERC20,int256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1417:48:37"
                            },
                            {
                              "assignments": [
                                5672,
                                5674
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5672,
                                  "mutability": "mutable",
                                  "name": "currencyId",
                                  "nameLocation": "1599:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5715,
                                  "src": "1592:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "typeName": {
                                    "id": 5671,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1592:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5674,
                                  "mutability": "mutable",
                                  "name": "maturity",
                                  "nameLocation": "1618:8:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5715,
                                  "src": "1611:15:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  },
                                  "typeName": {
                                    "id": 5673,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1611:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5677,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5675,
                                  "name": "getDecodedID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5401,
                                  "src": "1630:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$_t_uint40_$",
                                    "typeString": "function () view returns (uint16,uint40)"
                                  }
                                },
                                "id": 5676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1630:14:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$",
                                  "typeString": "tuple(uint16,uint40)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1591:53:37"
                            },
                            {
                              "assignments": [
                                5679
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5679,
                                  "mutability": "mutable",
                                  "name": "pvInternal",
                                  "nameLocation": "1665:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5715,
                                  "src": "1658:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 5678,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1658:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5693,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5682,
                                    "name": "currencyId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5672,
                                    "src": "1727:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "id": 5683,
                                    "name": "maturity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5674,
                                    "src": "1755:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5686,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 373,
                                          "src": "1788:11:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view returns (uint256)"
                                          }
                                        },
                                        "id": 5687,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1788:13:37",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5685,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1781:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 5684,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1781:6:37",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5688,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1781:21:37",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5689,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "1881:5:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5690,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "1881:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 5691,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1914:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5680,
                                    "name": "NotionalV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5135,
                                    "src": "1678:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                      "typeString": "contract INotionalV2"
                                    }
                                  },
                                  "id": 5681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPresentfCashValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7426,
                                  "src": "1678:31:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint16_$_t_uint256_$_t_int256_$_t_uint256_$_t_bool_$returns$_t_int256_$",
                                    "typeString": "function (uint16,uint256,int256,uint256,bool) view external returns (int256)"
                                  }
                                },
                                "id": 5692,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1678:255:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1658:275:37"
                            },
                            {
                              "assignments": [
                                5695
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5695,
                                  "mutability": "mutable",
                                  "name": "pvExternal",
                                  "nameLocation": "1955:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5715,
                                  "src": "1948:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 5694,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1948:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5703,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 5702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 5698,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5696,
                                        "name": "pvInternal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5679,
                                        "src": "1969:10:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 5697,
                                        "name": "precision",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5667,
                                        "src": "1982:9:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1969:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 5699,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1968:24:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "expression": {
                                    "id": 5700,
                                    "name": "Constants",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3949,
                                    "src": "1995:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Constants_$3949_$",
                                      "typeString": "type(library Constants)"
                                    }
                                  },
                                  "id": 5701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "INTERNAL_TOKEN_PRECISION",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3874,
                                  "src": "1995:34:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "1968:61:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1948:81:37"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 5707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5705,
                                      "name": "pvExternal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5695,
                                      "src": "2112:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 5706,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2126:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2112:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 5704,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2104:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 5708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2104:24:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5709,
                              "nodeType": "ExpressionStatement",
                              "src": "2104:24:37"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5712,
                                    "name": "pvExternal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5695,
                                    "src": "2157:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 5711,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2149:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 5710,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2149:7:37",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2149:19:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 5659,
                              "id": 5714,
                              "nodeType": "Return",
                              "src": "2142:26:37"
                            }
                          ]
                        },
                        "id": 5716,
                        "nodeType": "IfStatement",
                        "src": "1316:863:37",
                        "trueBody": {
                          "id": 5665,
                          "nodeType": "Block",
                          "src": "1334:63:37",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5662,
                                  "name": "_getMaturedUnderlyingExternal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5653,
                                  "src": "1355:29:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 5663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1355:31:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 5659,
                              "id": 5664,
                              "nodeType": "Return",
                              "src": "1348:38:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5654,
                    "nodeType": "StructuredDocumentation",
                    "src": "1201:38:37",
                    "text": "@dev See {IERC4262-totalAssets} "
                  },
                  "functionSelector": "01e1d114",
                  "id": 5718,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAssets",
                  "nameLocation": "1253:11:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5656,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1279:8:37"
                  },
                  "parameters": {
                    "id": 5655,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1264:2:37"
                  },
                  "returnParameters": {
                    "id": 5659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5658,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5718,
                        "src": "1297:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1297:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1296:9:37"
                  },
                  "scope": 6281,
                  "src": "1244:941:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7126
                  ],
                  "body": {
                    "id": 5767,
                    "nodeType": "Block",
                    "src": "2325:1144:37",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5727,
                            "name": "hasMatured",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "2339:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2339:12:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5765,
                          "nodeType": "Block",
                          "src": "3030:433:37",
                          "statements": [
                            {
                              "assignments": [
                                5744,
                                5746
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5744,
                                  "mutability": "mutable",
                                  "name": "currencyId",
                                  "nameLocation": "3122:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5765,
                                  "src": "3115:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "typeName": {
                                    "id": 5743,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3115:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5746,
                                  "mutability": "mutable",
                                  "name": "maturity",
                                  "nameLocation": "3141:8:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5765,
                                  "src": "3134:15:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  },
                                  "typeName": {
                                    "id": 5745,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3134:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5749,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5747,
                                  "name": "getDecodedID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5401,
                                  "src": "3153:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$_t_uint40_$",
                                    "typeString": "function () view returns (uint16,uint40)"
                                  }
                                },
                                "id": 5748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3153:14:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$",
                                  "typeString": "tuple(uint16,uint40)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3114:53:37"
                            },
                            {
                              "assignments": [
                                5751,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5751,
                                  "mutability": "mutable",
                                  "name": "fCashAmount",
                                  "nameLocation": "3190:11:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5765,
                                  "src": "3182:19:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5750,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3182:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null
                              ],
                              "id": 5762,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5754,
                                    "name": "currencyId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5744,
                                    "src": "3271:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "id": 5755,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5721,
                                    "src": "3299:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5756,
                                    "name": "maturity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5746,
                                    "src": "3323:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 5757,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3349:1:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "expression": {
                                      "id": 5758,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "3368:5:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "3368:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "74727565",
                                    "id": 5760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3401:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5752,
                                    "name": "NotionalV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5135,
                                    "src": "3219:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                      "typeString": "contract INotionalV2"
                                    }
                                  },
                                  "id": 5753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getfCashLendFromDeposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7337,
                                  "src": "3219:34:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint16_$_t_uint256_$_t_uint256_$_t_uint32_$_t_uint256_$_t_bool_$returns$_t_uint88_$_t_uint8_$_t_bytes32_$",
                                    "typeString": "function (uint16,uint256,uint256,uint32,uint256,bool) view external returns (uint88,uint8,bytes32)"
                                  }
                                },
                                "id": 5761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3219:200:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint88_$_t_uint8_$_t_bytes32_$",
                                  "typeString": "tuple(uint88,uint8,bytes32)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3181:238:37"
                            },
                            {
                              "expression": {
                                "id": 5763,
                                "name": "fCashAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5751,
                                "src": "3441:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 5726,
                              "id": 5764,
                              "nodeType": "Return",
                              "src": "3434:18:37"
                            }
                          ]
                        },
                        "id": 5766,
                        "nodeType": "IfStatement",
                        "src": "2335:1128:37",
                        "trueBody": {
                          "id": 5742,
                          "nodeType": "Block",
                          "src": "2353:671:37",
                          "statements": [
                            {
                              "assignments": [
                                5730
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5730,
                                  "mutability": "mutable",
                                  "name": "underlyingExternal",
                                  "nameLocation": "2375:18:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5742,
                                  "src": "2367:26:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5729,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2367:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5733,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5731,
                                  "name": "_getMaturedUnderlyingExternal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5653,
                                  "src": "2396:29:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 5732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2396:31:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2367:60:37"
                            },
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5734,
                                        "name": "assets",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5721,
                                        "src": "2935:6:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5735,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 373,
                                          "src": "2944:11:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                            "typeString": "function () view returns (uint256)"
                                          }
                                        },
                                        "id": 5736,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2944:13:37",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2935:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5738,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2934:24:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 5739,
                                  "name": "underlyingExternal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5730,
                                  "src": "2961:18:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2934:45:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 5726,
                              "id": 5741,
                              "nodeType": "Return",
                              "src": "2927:52:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5719,
                    "nodeType": "StructuredDocumentation",
                    "src": "2191:42:37",
                    "text": "@dev See {IERC4262-convertToShares} "
                  },
                  "functionSelector": "c6e6f592",
                  "id": 5768,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertToShares",
                  "nameLocation": "2247:15:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5723,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2291:8:37"
                  },
                  "parameters": {
                    "id": 5722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5721,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "2271:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5768,
                        "src": "2263:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2263:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2262:16:37"
                  },
                  "returnParameters": {
                    "id": 5726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5725,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "2317:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5768,
                        "src": "2309:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2309:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2308:16:37"
                  },
                  "scope": 6281,
                  "src": "2238:1231:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7134
                  ],
                  "body": {
                    "id": 5816,
                    "nodeType": "Block",
                    "src": "3609:788:37",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5777,
                            "name": "hasMatured",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "3623:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3623:12:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5814,
                          "nodeType": "Block",
                          "src": "3942:449:37",
                          "statements": [
                            {
                              "assignments": [
                                5794,
                                5796
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5794,
                                  "mutability": "mutable",
                                  "name": "currencyId",
                                  "nameLocation": "4041:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5814,
                                  "src": "4034:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "typeName": {
                                    "id": 5793,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4034:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5796,
                                  "mutability": "mutable",
                                  "name": "maturity",
                                  "nameLocation": "4060:8:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5814,
                                  "src": "4053:15:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  },
                                  "typeName": {
                                    "id": 5795,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4053:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5799,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5797,
                                  "name": "getDecodedID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5401,
                                  "src": "4072:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$_t_uint40_$",
                                    "typeString": "function () view returns (uint16,uint40)"
                                  }
                                },
                                "id": 5798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4072:14:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$",
                                  "typeString": "tuple(uint16,uint40)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4033:53:37"
                            },
                            {
                              "assignments": [
                                5801,
                                null,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5801,
                                  "mutability": "mutable",
                                  "name": "depositAmountUnderlying",
                                  "nameLocation": "4109:23:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5814,
                                  "src": "4101:31:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5800,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4101:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null,
                                null
                              ],
                              "id": 5811,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5804,
                                    "name": "currencyId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5794,
                                    "src": "4209:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "id": 5805,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5771,
                                    "src": "4237:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5806,
                                    "name": "maturity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5796,
                                    "src": "4261:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 5807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4287:1:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "expression": {
                                      "id": 5808,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "4306:5:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 5809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "4306:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5802,
                                    "name": "NotionalV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5135,
                                    "src": "4157:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                      "typeString": "contract INotionalV2"
                                    }
                                  },
                                  "id": 5803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getDepositFromfCashLend",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7358,
                                  "src": "4157:34:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint16_$_t_uint256_$_t_uint256_$_t_uint32_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$",
                                    "typeString": "function (uint16,uint256,uint256,uint32,uint256) view external returns (uint256,uint256,uint8,bytes32)"
                                  }
                                },
                                "id": 5810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4157:178:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$",
                                  "typeString": "tuple(uint256,uint256,uint8,bytes32)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4100:235:37"
                            },
                            {
                              "expression": {
                                "id": 5812,
                                "name": "depositAmountUnderlying",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5801,
                                "src": "4357:23:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 5776,
                              "id": 5813,
                              "nodeType": "Return",
                              "src": "4350:30:37"
                            }
                          ]
                        },
                        "id": 5815,
                        "nodeType": "IfStatement",
                        "src": "3619:772:37",
                        "trueBody": {
                          "id": 5792,
                          "nodeType": "Block",
                          "src": "3637:299:37",
                          "statements": [
                            {
                              "assignments": [
                                5780
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5780,
                                  "mutability": "mutable",
                                  "name": "underlyingExternal",
                                  "nameLocation": "3659:18:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5792,
                                  "src": "3651:26:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5779,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3651:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5783,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5781,
                                  "name": "_getMaturedUnderlyingExternal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5653,
                                  "src": "3680:29:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 5782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3680:31:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3651:60:37"
                            },
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5786,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5784,
                                        "name": "shares",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5771,
                                        "src": "3847:6:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 5785,
                                        "name": "underlyingExternal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5780,
                                        "src": "3856:18:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3847:27:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5787,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3846:29:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5788,
                                    "name": "totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 373,
                                    "src": "3878:11:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view returns (uint256)"
                                    }
                                  },
                                  "id": 5789,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3878:13:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3846:45:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 5776,
                              "id": 5791,
                              "nodeType": "Return",
                              "src": "3839:52:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5769,
                    "nodeType": "StructuredDocumentation",
                    "src": "3475:42:37",
                    "text": "@dev See {IERC4262-convertToAssets} "
                  },
                  "functionSelector": "07a2d13a",
                  "id": 5817,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertToAssets",
                  "nameLocation": "3531:15:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5773,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3575:8:37"
                  },
                  "parameters": {
                    "id": 5772,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5771,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "3555:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "3547:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5770,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3547:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3546:16:37"
                  },
                  "returnParameters": {
                    "id": 5776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5775,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "3601:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5817,
                        "src": "3593:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3593:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3592:16:37"
                  },
                  "scope": 6281,
                  "src": "3522:875:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7142
                  ],
                  "body": {
                    "id": 5836,
                    "nodeType": "Block",
                    "src": "4513:60:37",
                    "statements": [
                      {
                        "expression": {
                          "condition": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5826,
                              "name": "hasMatured",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5366,
                              "src": "4530:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                "typeString": "function () view returns (bool)"
                              }
                            },
                            "id": 5827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4530:12:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5831,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4554:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 5830,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4554:7:37",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 5829,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "4549:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4549:13:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 5833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "4549:17:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "4530:36:37",
                          "trueExpression": {
                            "hexValue": "30",
                            "id": 5828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4545:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5825,
                        "id": 5835,
                        "nodeType": "Return",
                        "src": "4523:43:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5818,
                    "nodeType": "StructuredDocumentation",
                    "src": "4403:37:37",
                    "text": "@dev See {IERC4262-maxDeposit} "
                  },
                  "functionSelector": "402d267d",
                  "id": 5837,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxDeposit",
                  "nameLocation": "4454:10:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5822,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4486:8:37"
                  },
                  "parameters": {
                    "id": 5821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5820,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5837,
                        "src": "4465:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4465:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4464:9:37"
                  },
                  "returnParameters": {
                    "id": 5825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5824,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5837,
                        "src": "4504:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5823,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4504:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4503:9:37"
                  },
                  "scope": 6281,
                  "src": "4445:128:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7168
                  ],
                  "body": {
                    "id": 5856,
                    "nodeType": "Block",
                    "src": "4683:59:37",
                    "statements": [
                      {
                        "expression": {
                          "condition": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5846,
                              "name": "hasMatured",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5366,
                              "src": "4700:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                "typeString": "function () view returns (bool)"
                              }
                            },
                            "id": 5847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4700:12:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4724:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint88_$",
                                    "typeString": "type(uint88)"
                                  },
                                  "typeName": {
                                    "id": 5850,
                                    "name": "uint88",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4724:6:37",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint88_$",
                                    "typeString": "type(uint88)"
                                  }
                                ],
                                "id": 5849,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "4719:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4719:12:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint88",
                                "typeString": "type(uint88)"
                              }
                            },
                            "id": 5853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "4719:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "id": 5854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "4700:35:37",
                          "trueExpression": {
                            "hexValue": "30",
                            "id": 5848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4715:1:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "functionReturnParameters": 5845,
                        "id": 5855,
                        "nodeType": "Return",
                        "src": "4693:42:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5838,
                    "nodeType": "StructuredDocumentation",
                    "src": "4579:34:37",
                    "text": "@dev See {IERC4262-maxMint} "
                  },
                  "functionSelector": "c63d75b6",
                  "id": 5857,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxMint",
                  "nameLocation": "4627:7:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5842,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4656:8:37"
                  },
                  "parameters": {
                    "id": 5841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5840,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5857,
                        "src": "4635:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4635:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4634:9:37"
                  },
                  "returnParameters": {
                    "id": 5845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5844,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5857,
                        "src": "4674:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4674:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4673:9:37"
                  },
                  "scope": 6281,
                  "src": "4618:124:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7194
                  ],
                  "body": {
                    "id": 5872,
                    "nodeType": "Block",
                    "src": "4866:57:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5868,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5860,
                                  "src": "4909:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5867,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 389,
                                "src": "4899:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 5869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4899:16:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5866,
                            "name": "convertToAssets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5817,
                            "src": "4883:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 5870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4883:33:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5865,
                        "id": 5871,
                        "nodeType": "Return",
                        "src": "4876:40:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5858,
                    "nodeType": "StructuredDocumentation",
                    "src": "4748:38:37",
                    "text": "@dev See {IERC4262-maxWithdraw} "
                  },
                  "functionSelector": "ce96cb77",
                  "id": 5873,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxWithdraw",
                  "nameLocation": "4800:11:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5862,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4839:8:37"
                  },
                  "parameters": {
                    "id": 5861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5860,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4820:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5873,
                        "src": "4812:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5859,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4812:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4811:15:37"
                  },
                  "returnParameters": {
                    "id": 5865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5864,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5873,
                        "src": "4857:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4857:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4856:9:37"
                  },
                  "scope": 6281,
                  "src": "4791:132:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7222
                  ],
                  "body": {
                    "id": 5886,
                    "nodeType": "Block",
                    "src": "5043:40:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5883,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5876,
                              "src": "5070:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5882,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 389,
                            "src": "5060:9:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 5884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5060:16:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5881,
                        "id": 5885,
                        "nodeType": "Return",
                        "src": "5053:23:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5874,
                    "nodeType": "StructuredDocumentation",
                    "src": "4929:36:37",
                    "text": "@dev See {IERC4262-maxRedeem} "
                  },
                  "functionSelector": "d905777e",
                  "id": 5887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxRedeem",
                  "nameLocation": "4979:9:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5878,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5016:8:37"
                  },
                  "parameters": {
                    "id": 5877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5876,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4997:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5887,
                        "src": "4989:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4989:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4988:15:37"
                  },
                  "returnParameters": {
                    "id": 5881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5880,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5887,
                        "src": "5034:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5879,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5034:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5033:9:37"
                  },
                  "scope": 6281,
                  "src": "4970:113:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7150
                  ],
                  "body": {
                    "id": 5907,
                    "nodeType": "Block",
                    "src": "5214:90:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "5232:13:37",
                              "subExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5897,
                                  "name": "hasMatured",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5366,
                                  "src": "5233:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 5898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5233:12:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d617475726564",
                              "id": 5900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5247:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325",
                                "typeString": "literal_string \"Matured\""
                              },
                              "value": "Matured"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325",
                                "typeString": "literal_string \"Matured\""
                              }
                            ],
                            "id": 5896,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5224:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5224:33:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5902,
                        "nodeType": "ExpressionStatement",
                        "src": "5224:33:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5904,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5890,
                              "src": "5290:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5903,
                            "name": "convertToShares",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5768,
                            "src": "5274:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 5905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5274:23:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5895,
                        "id": 5906,
                        "nodeType": "Return",
                        "src": "5267:30:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5888,
                    "nodeType": "StructuredDocumentation",
                    "src": "5089:41:37",
                    "text": "@dev See {IERC4262-previewDeposit} "
                  },
                  "functionSelector": "ef8b30f7",
                  "id": 5908,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewDeposit",
                  "nameLocation": "5144:14:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5892,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5187:8:37"
                  },
                  "parameters": {
                    "id": 5891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5890,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "5167:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5908,
                        "src": "5159:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5889,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5159:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5158:16:37"
                  },
                  "returnParameters": {
                    "id": 5895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5894,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5908,
                        "src": "5205:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5893,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5205:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5204:9:37"
                  },
                  "scope": 6281,
                  "src": "5135:169:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7176
                  ],
                  "body": {
                    "id": 5928,
                    "nodeType": "Block",
                    "src": "5429:90:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "5447:13:37",
                              "subExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5918,
                                  "name": "hasMatured",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5366,
                                  "src": "5448:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 5919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5448:12:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d617475726564",
                              "id": 5921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5462:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325",
                                "typeString": "literal_string \"Matured\""
                              },
                              "value": "Matured"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_821eaa36e507ff1ba73eb96a6416d529e48c62d53b7190e252aa812002652325",
                                "typeString": "literal_string \"Matured\""
                              }
                            ],
                            "id": 5917,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5439:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5439:33:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5923,
                        "nodeType": "ExpressionStatement",
                        "src": "5439:33:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5925,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5911,
                              "src": "5505:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5924,
                            "name": "convertToAssets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5817,
                            "src": "5489:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 5926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5489:23:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5916,
                        "id": 5927,
                        "nodeType": "Return",
                        "src": "5482:30:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5909,
                    "nodeType": "StructuredDocumentation",
                    "src": "5310:38:37",
                    "text": "@dev See {IERC4262-previewMint} "
                  },
                  "functionSelector": "b3d7f6b9",
                  "id": 5929,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewMint",
                  "nameLocation": "5362:11:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5913,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5402:8:37"
                  },
                  "parameters": {
                    "id": 5912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5911,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "5382:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5929,
                        "src": "5374:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5910,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5374:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5373:16:37"
                  },
                  "returnParameters": {
                    "id": 5916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5915,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5929,
                        "src": "5420:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5420:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5419:9:37"
                  },
                  "scope": 6281,
                  "src": "5353:166:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7202
                  ],
                  "body": {
                    "id": 5970,
                    "nodeType": "Block",
                    "src": "5659:509:37",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5938,
                            "name": "hasMatured",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "5673:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5673:12:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5968,
                          "nodeType": "Block",
                          "src": "5750:412:37",
                          "statements": [
                            {
                              "assignments": [
                                5948,
                                5950
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5948,
                                  "mutability": "mutable",
                                  "name": "currencyId",
                                  "nameLocation": "5863:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5968,
                                  "src": "5856:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "typeName": {
                                    "id": 5947,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5856:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5950,
                                  "mutability": "mutable",
                                  "name": "maturity",
                                  "nameLocation": "5882:8:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5968,
                                  "src": "5875:15:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  },
                                  "typeName": {
                                    "id": 5949,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5875:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5953,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5951,
                                  "name": "getDecodedID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5401,
                                  "src": "5894:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$_t_uint40_$",
                                    "typeString": "function () view returns (uint16,uint40)"
                                  }
                                },
                                "id": 5952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5894:14:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$",
                                  "typeString": "tuple(uint16,uint40)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5855:53:37"
                            },
                            {
                              "expression": {
                                "id": 5966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 5954,
                                      "name": "shares",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5936,
                                      "src": "5923:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null,
                                    null
                                  ],
                                  "id": 5955,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "5922:22:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$__$__$",
                                    "typeString": "tuple(uint256,,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 5958,
                                      "name": "currencyId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5948,
                                      "src": "6003:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "id": 5959,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5932,
                                      "src": "6031:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 5960,
                                      "name": "maturity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5950,
                                      "src": "6055:8:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint40",
                                        "typeString": "uint40"
                                      }
                                    },
                                    {
                                      "hexValue": "30",
                                      "id": 5961,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6081:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "expression": {
                                        "id": 5962,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "6100:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 5963,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "src": "6100:15:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 5964,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6133:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint40",
                                        "typeString": "uint40"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5956,
                                      "name": "NotionalV2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5135,
                                      "src": "5947:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                        "typeString": "contract INotionalV2"
                                      }
                                    },
                                    "id": 5957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getfCashBorrowFromPrincipal",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7400,
                                    "src": "5947:38:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_uint16_$_t_uint256_$_t_uint256_$_t_uint32_$_t_uint256_$_t_bool_$returns$_t_uint88_$_t_uint8_$_t_bytes32_$",
                                      "typeString": "function (uint16,uint256,uint256,uint32,uint256,bool) view external returns (uint88,uint8,bytes32)"
                                    }
                                  },
                                  "id": 5965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5947:204:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint88_$_t_uint8_$_t_bytes32_$",
                                    "typeString": "tuple(uint88,uint8,bytes32)"
                                  }
                                },
                                "src": "5922:229:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5967,
                              "nodeType": "ExpressionStatement",
                              "src": "5922:229:37"
                            }
                          ]
                        },
                        "id": 5969,
                        "nodeType": "IfStatement",
                        "src": "5669:493:37",
                        "trueBody": {
                          "id": 5946,
                          "nodeType": "Block",
                          "src": "5687:57:37",
                          "statements": [
                            {
                              "expression": {
                                "id": 5944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5940,
                                  "name": "shares",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5936,
                                  "src": "5701:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 5942,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5932,
                                      "src": "5726:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 5941,
                                    "name": "convertToShares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5768,
                                    "src": "5710:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 5943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5710:23:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5701:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5945,
                              "nodeType": "ExpressionStatement",
                              "src": "5701:32:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5930,
                    "nodeType": "StructuredDocumentation",
                    "src": "5525:42:37",
                    "text": "@dev See {IERC4262-previewWithdraw} "
                  },
                  "functionSelector": "0a28a477",
                  "id": 5971,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewWithdraw",
                  "nameLocation": "5581:15:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5934,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5625:8:37"
                  },
                  "parameters": {
                    "id": 5933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5932,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "5605:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "5597:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5597:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5596:16:37"
                  },
                  "returnParameters": {
                    "id": 5937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5936,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "5651:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 5971,
                        "src": "5643:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5935,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5643:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5642:16:37"
                  },
                  "scope": 6281,
                  "src": "5572:596:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7230
                  ],
                  "body": {
                    "id": 6011,
                    "nodeType": "Block",
                    "src": "6304:494:37",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5980,
                            "name": "hasMatured",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "6318:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 5981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6318:12:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6009,
                          "nodeType": "Block",
                          "src": "6395:397:37",
                          "statements": [
                            {
                              "assignments": [
                                5990,
                                5992
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5990,
                                  "mutability": "mutable",
                                  "name": "currencyId",
                                  "nameLocation": "6508:10:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6009,
                                  "src": "6501:17:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "typeName": {
                                    "id": 5989,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6501:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5992,
                                  "mutability": "mutable",
                                  "name": "maturity",
                                  "nameLocation": "6527:8:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6009,
                                  "src": "6520:15:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  },
                                  "typeName": {
                                    "id": 5991,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6520:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5995,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5993,
                                  "name": "getDecodedID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5401,
                                  "src": "6539:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$_t_uint40_$",
                                    "typeString": "function () view returns (uint16,uint40)"
                                  }
                                },
                                "id": 5994,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6539:14:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint16_$_t_uint40_$",
                                  "typeString": "tuple(uint16,uint40)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6500:53:37"
                            },
                            {
                              "expression": {
                                "id": 6007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 5996,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5978,
                                      "src": "6568:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null,
                                    null,
                                    null
                                  ],
                                  "id": 5997,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "6567:29:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$__$__$__$",
                                    "typeString": "tuple(uint256,,,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 6000,
                                      "name": "currencyId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5990,
                                      "src": "6655:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    {
                                      "id": 6001,
                                      "name": "shares",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5974,
                                      "src": "6683:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6002,
                                      "name": "maturity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5992,
                                      "src": "6707:8:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint40",
                                        "typeString": "uint40"
                                      }
                                    },
                                    {
                                      "hexValue": "30",
                                      "id": 6003,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6733:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "expression": {
                                        "id": 6004,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "6752:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 6005,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "src": "6752:15:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint40",
                                        "typeString": "uint40"
                                      },
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5998,
                                      "name": "NotionalV2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5135,
                                      "src": "6599:10:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                        "typeString": "contract INotionalV2"
                                      }
                                    },
                                    "id": 5999,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getPrincipalFromfCashBorrow",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7379,
                                    "src": "6599:38:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_uint16_$_t_uint256_$_t_uint256_$_t_uint32_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$",
                                      "typeString": "function (uint16,uint256,uint256,uint32,uint256) view external returns (uint256,uint256,uint8,bytes32)"
                                    }
                                  },
                                  "id": 6006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6599:182:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$",
                                    "typeString": "tuple(uint256,uint256,uint8,bytes32)"
                                  }
                                },
                                "src": "6567:214:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6008,
                              "nodeType": "ExpressionStatement",
                              "src": "6567:214:37"
                            }
                          ]
                        },
                        "id": 6010,
                        "nodeType": "IfStatement",
                        "src": "6314:478:37",
                        "trueBody": {
                          "id": 5988,
                          "nodeType": "Block",
                          "src": "6332:57:37",
                          "statements": [
                            {
                              "expression": {
                                "id": 5986,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5982,
                                  "name": "assets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5978,
                                  "src": "6346:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 5984,
                                      "name": "shares",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5974,
                                      "src": "6371:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 5983,
                                    "name": "convertToAssets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5817,
                                    "src": "6355:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 5985,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6355:23:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6346:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5987,
                              "nodeType": "ExpressionStatement",
                              "src": "6346:32:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5972,
                    "nodeType": "StructuredDocumentation",
                    "src": "6174:40:37",
                    "text": "@dev See {IERC4262-previewRedeem} "
                  },
                  "functionSelector": "4cdad506",
                  "id": 6012,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewRedeem",
                  "nameLocation": "6228:13:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5976,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6270:8:37"
                  },
                  "parameters": {
                    "id": 5975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5974,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "6250:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6012,
                        "src": "6242:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5973,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6242:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6241:16:37"
                  },
                  "returnParameters": {
                    "id": 5979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5978,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "6296:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6012,
                        "src": "6288:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6288:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6287:16:37"
                  },
                  "scope": 6281,
                  "src": "6219:579:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7160
                  ],
                  "body": {
                    "id": 6058,
                    "nodeType": "Block",
                    "src": "6928:275:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6024,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6015,
                                "src": "6946:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 6026,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6017,
                                    "src": "6967:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6025,
                                  "name": "maxDeposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5837,
                                  "src": "6956:10:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 6027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6956:20:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6946:30:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d6178204465706f736974",
                              "id": 6029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6978:13:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a",
                                "typeString": "literal_string \"Max Deposit\""
                              },
                              "value": "Max Deposit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40a2ad6c40b8673e35456793d1fc3ff21cab30de412e5d97f52f37c2d29c4e4a",
                                "typeString": "literal_string \"Max Deposit\""
                              }
                            ],
                            "id": 6023,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6938:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6938:54:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6031,
                        "nodeType": "ExpressionStatement",
                        "src": "6938:54:37"
                      },
                      {
                        "assignments": [
                          6033
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6033,
                            "mutability": "mutable",
                            "name": "shares",
                            "nameLocation": "7010:6:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6058,
                            "src": "7002:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6032,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7002:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6037,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6035,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6015,
                              "src": "7034:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6034,
                            "name": "previewDeposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5908,
                            "src": "7019:14:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 6036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7019:22:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7002:39:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6039,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6015,
                              "src": "7066:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 6041,
                                  "name": "shares",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6033,
                                  "src": "7086:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6040,
                                "name": "_safeUint88",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7081,
                                "src": "7074:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint88_$",
                                  "typeString": "function (uint256) pure returns (uint88)"
                                }
                              },
                              "id": 6042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7074:19:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "id": 6043,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6017,
                              "src": "7095:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 6044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7105:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "74727565",
                              "id": 6045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7108:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6038,
                            "name": "_mintInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6517,
                            "src": "7052:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint88_$_t_address_$_t_uint32_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint88,address,uint32,bool)"
                            }
                          },
                          "id": 6046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7052:61:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6047,
                        "nodeType": "ExpressionStatement",
                        "src": "7052:61:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6049,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7136:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7136:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6051,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6017,
                              "src": "7148:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6052,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6015,
                              "src": "7158:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6053,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "7166:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6048,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7094,
                            "src": "7128:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 6054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7128:45:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6055,
                        "nodeType": "EmitStatement",
                        "src": "7123:50:37"
                      },
                      {
                        "expression": {
                          "id": 6056,
                          "name": "shares",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6033,
                          "src": "7190:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6022,
                        "id": 6057,
                        "nodeType": "Return",
                        "src": "7183:13:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6013,
                    "nodeType": "StructuredDocumentation",
                    "src": "6804:34:37",
                    "text": "@dev See {IERC4262-deposit} "
                  },
                  "functionSelector": "6e553f65",
                  "id": 6059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nameLocation": "6852:7:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6019,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6901:8:37"
                  },
                  "parameters": {
                    "id": 6018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6015,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "6868:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6059,
                        "src": "6860:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6014,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6860:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6017,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "6884:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6059,
                        "src": "6876:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6016,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6876:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6859:34:37"
                  },
                  "returnParameters": {
                    "id": 6022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6021,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6059,
                        "src": "6919:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6919:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6918:9:37"
                  },
                  "scope": 6281,
                  "src": "6843:360:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7186
                  ],
                  "body": {
                    "id": 6096,
                    "nodeType": "Block",
                    "src": "7327:208:37",
                    "statements": [
                      {
                        "assignments": [
                          6071
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6071,
                            "mutability": "mutable",
                            "name": "assets",
                            "nameLocation": "7345:6:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6096,
                            "src": "7337:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6070,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7337:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6075,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6073,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6062,
                              "src": "7366:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6072,
                            "name": "previewMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5929,
                            "src": "7354:11:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 6074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7354:19:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7337:36:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6077,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "7398:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 6079,
                                  "name": "shares",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6062,
                                  "src": "7418:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6078,
                                "name": "_safeUint88",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7081,
                                "src": "7406:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint88_$",
                                  "typeString": "function (uint256) pure returns (uint88)"
                                }
                              },
                              "id": 6080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7406:19:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "id": 6081,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6064,
                              "src": "7427:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 6082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7437:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "74727565",
                              "id": 6083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7440:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6076,
                            "name": "_mintInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6517,
                            "src": "7384:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint88_$_t_address_$_t_uint32_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint88,address,uint32,bool)"
                            }
                          },
                          "id": 6084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7384:61:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6085,
                        "nodeType": "ExpressionStatement",
                        "src": "7384:61:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6087,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7468:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7468:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6089,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6064,
                              "src": "7480:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6090,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "7490:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6091,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6062,
                              "src": "7498:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6086,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7094,
                            "src": "7460:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 6092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7460:45:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6093,
                        "nodeType": "EmitStatement",
                        "src": "7455:50:37"
                      },
                      {
                        "expression": {
                          "id": 6094,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6071,
                          "src": "7522:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6069,
                        "id": 6095,
                        "nodeType": "Return",
                        "src": "7515:13:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6060,
                    "nodeType": "StructuredDocumentation",
                    "src": "7209:31:37",
                    "text": "@dev See {IERC4262-mint} "
                  },
                  "functionSelector": "94bf804d",
                  "id": 6097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nameLocation": "7254:4:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6066,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7300:8:37"
                  },
                  "parameters": {
                    "id": 6065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6062,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "7267:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6097,
                        "src": "7259:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6061,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7259:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6064,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "7283:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6097,
                        "src": "7275:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6063,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7275:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7258:34:37"
                  },
                  "returnParameters": {
                    "id": 6069,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6068,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6097,
                        "src": "7318:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7318:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7317:9:37"
                  },
                  "scope": 6281,
                  "src": "7245:290:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7214
                  ],
                  "body": {
                    "id": 6146,
                    "nodeType": "Block",
                    "src": "7712:302:37",
                    "statements": [
                      {
                        "assignments": [
                          6111
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6111,
                            "mutability": "mutable",
                            "name": "shares",
                            "nameLocation": "7730:6:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6146,
                            "src": "7722:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6110,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7722:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6115,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6113,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6100,
                              "src": "7755:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6112,
                            "name": "previewWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5971,
                            "src": "7739:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 6114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7739:23:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7722:40:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6116,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "7777:3:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "7777:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6118,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6104,
                            "src": "7791:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7777:19:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6128,
                        "nodeType": "IfStatement",
                        "src": "7773:92:37",
                        "trueBody": {
                          "id": 6127,
                          "nodeType": "Block",
                          "src": "7798:67:37",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6121,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6104,
                                    "src": "7828:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6122,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "7835:3:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6123,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "7835:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6124,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6111,
                                    "src": "7847:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6120,
                                  "name": "_spendAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1324,
                                  "src": "7812:15:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 6125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7812:42:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6126,
                              "nodeType": "ExpressionStatement",
                              "src": "7812:42:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6130,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6111,
                              "src": "7890:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6131,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6102,
                              "src": "7898:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6132,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6104,
                              "src": "7908:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6129,
                            "name": "_redeemInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6246,
                            "src": "7874:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,address)"
                            }
                          },
                          "id": 6133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7874:40:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6134,
                        "nodeType": "ExpressionStatement",
                        "src": "7874:40:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6136,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7939:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7939:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6138,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6102,
                              "src": "7951:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6139,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6104,
                              "src": "7961:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6140,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6100,
                              "src": "7968:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6141,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6111,
                              "src": "7976:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6135,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7106,
                            "src": "7930:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7930:53:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6143,
                        "nodeType": "EmitStatement",
                        "src": "7925:58:37"
                      },
                      {
                        "expression": {
                          "id": 6144,
                          "name": "shares",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6111,
                          "src": "8001:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6109,
                        "id": 6145,
                        "nodeType": "Return",
                        "src": "7994:13:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6098,
                    "nodeType": "StructuredDocumentation",
                    "src": "7541:35:37",
                    "text": "@dev See {IERC4262-withdraw} "
                  },
                  "functionSelector": "b460af94",
                  "id": 6147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "7590:8:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6106,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7685:8:37"
                  },
                  "parameters": {
                    "id": 6105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6100,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "7616:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6147,
                        "src": "7608:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6099,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7608:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6102,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "7640:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6147,
                        "src": "7632:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7632:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6104,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "7666:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6147,
                        "src": "7658:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7658:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7598:79:37"
                  },
                  "returnParameters": {
                    "id": 6109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6108,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6147,
                        "src": "7703:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6107,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7703:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7702:9:37"
                  },
                  "scope": 6281,
                  "src": "7581:433:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7242
                  ],
                  "body": {
                    "id": 6216,
                    "nodeType": "Block",
                    "src": "8187:584:37",
                    "statements": [
                      {
                        "assignments": [
                          6161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6161,
                            "mutability": "mutable",
                            "name": "balanceBefore",
                            "nameLocation": "8346:13:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6216,
                            "src": "8338:21:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6160,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8338:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6169,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6167,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6152,
                              "src": "8388:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6163,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5610,
                                    "src": "8369:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 6164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8369:7:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6162,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2763,
                                "src": "8362:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 6165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8362:15:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 6166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2702,
                            "src": "8362:25:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 6168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8362:35:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8338:59:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6170,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "8412:3:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "8412:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 6172,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6154,
                            "src": "8426:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8412:19:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6182,
                        "nodeType": "IfStatement",
                        "src": "8408:92:37",
                        "trueBody": {
                          "id": 6181,
                          "nodeType": "Block",
                          "src": "8433:67:37",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6175,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6154,
                                    "src": "8463:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6176,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "8470:3:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "8470:10:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6178,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6150,
                                    "src": "8482:6:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6174,
                                  "name": "_spendAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1324,
                                  "src": "8447:15:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 6179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8447:42:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6180,
                              "nodeType": "ExpressionStatement",
                              "src": "8447:42:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6184,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6150,
                              "src": "8525:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6185,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6152,
                              "src": "8533:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6186,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6154,
                              "src": "8543:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6183,
                            "name": "_redeemInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6246,
                            "src": "8509:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address,address)"
                            }
                          },
                          "id": 6187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8509:40:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6188,
                        "nodeType": "ExpressionStatement",
                        "src": "8509:40:37"
                      },
                      {
                        "assignments": [
                          6190
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6190,
                            "mutability": "mutable",
                            "name": "balanceAfter",
                            "nameLocation": "8568:12:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6216,
                            "src": "8560:20:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6189,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8560:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6198,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6196,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6152,
                              "src": "8609:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 6192,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5610,
                                    "src": "8590:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 6193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8590:7:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6191,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2763,
                                "src": "8583:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 6194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8583:15:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 6195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2702,
                            "src": "8583:25:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 6197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8583:35:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8560:58:37"
                      },
                      {
                        "assignments": [
                          6200
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6200,
                            "mutability": "mutable",
                            "name": "assets",
                            "nameLocation": "8636:6:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6216,
                            "src": "8628:14:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6199,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8628:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6204,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6201,
                            "name": "balanceAfter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6190,
                            "src": "8645:12:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 6202,
                            "name": "balanceBefore",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6161,
                            "src": "8660:13:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8645:28:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8628:45:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6206,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8697:3:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8697:10:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6208,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6152,
                              "src": "8709:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6209,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6154,
                              "src": "8719:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6210,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6200,
                              "src": "8726:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6211,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6150,
                              "src": "8734:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6205,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7106,
                            "src": "8688:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8688:53:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6213,
                        "nodeType": "EmitStatement",
                        "src": "8683:58:37"
                      },
                      {
                        "expression": {
                          "id": 6214,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6200,
                          "src": "8758:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6159,
                        "id": 6215,
                        "nodeType": "Return",
                        "src": "8751:13:37"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6148,
                    "nodeType": "StructuredDocumentation",
                    "src": "8020:33:37",
                    "text": "@dev See {IERC4262-redeem} "
                  },
                  "functionSelector": "ba087652",
                  "id": 6217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeem",
                  "nameLocation": "8067:6:37",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6156,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8160:8:37"
                  },
                  "parameters": {
                    "id": 6155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6150,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "8091:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6217,
                        "src": "8083:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8083:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6152,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "8115:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6217,
                        "src": "8107:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6151,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8107:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6154,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "8141:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6217,
                        "src": "8133:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6153,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8133:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8073:79:37"
                  },
                  "returnParameters": {
                    "id": 6159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6158,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6217,
                        "src": "8178:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6157,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8178:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8177:9:37"
                  },
                  "scope": 6281,
                  "src": "8058:713:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6245,
                    "nodeType": "Block",
                    "src": "8889:325:37",
                    "statements": [
                      {
                        "assignments": [
                          6227
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6227,
                            "mutability": "mutable",
                            "name": "userData",
                            "nameLocation": "8912:8:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6245,
                            "src": "8899:21:37",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6226,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "8899:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6237,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "74727565",
                                  "id": 6231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8996:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 6232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9033:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "id": 6233,
                                  "name": "receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6221,
                                  "src": "9066:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "hexValue": "30",
                                  "id": 6234,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9108:1:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6230,
                                "name": "RedeemOpts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7490,
                                "src": "8947:10:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_RedeemOpts_$7490_storage_ptr_$",
                                  "typeString": "type(struct IWrappedfCash.RedeemOpts storage pointer)"
                                }
                              },
                              "id": 6235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "redeemToUnderlying",
                                "transferfCash",
                                "receiver",
                                "maxImpliedRate"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "8947:177:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            ],
                            "expression": {
                              "id": 6228,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8923:3:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "8923:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 6236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8923:211:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8899:235:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6239,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6223,
                              "src": "9179:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6240,
                              "name": "shares",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6219,
                              "src": "9186:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6241,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6227,
                              "src": "9194:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 6242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9204:2:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 6238,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6852
                            ],
                            "referencedDeclaration": 6852,
                            "src": "9173:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 6243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9173:34:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6244,
                        "nodeType": "ExpressionStatement",
                        "src": "9173:34:37"
                      }
                    ]
                  },
                  "id": 6246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_redeemInternal",
                  "nameLocation": "8786:15:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6219,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "8819:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6246,
                        "src": "8811:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8811:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6221,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "8843:8:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6246,
                        "src": "8835:16:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8835:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6223,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "8869:5:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6246,
                        "src": "8861:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6222,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8861:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8801:79:37"
                  },
                  "returnParameters": {
                    "id": 6225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8889:0:37"
                  },
                  "scope": 6281,
                  "src": "8777:437:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 6279,
                    "nodeType": "Block",
                    "src": "9283:110:37",
                    "statements": [
                      {
                        "assignments": [
                          6254
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6254,
                            "mutability": "mutable",
                            "name": "y",
                            "nameLocation": "9300:1:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 6279,
                            "src": "9293:8:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 6253,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9293:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6260,
                        "initialValue": {
                          "id": 6259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "9304:10:37",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 6257,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6248,
                                "src": "9312:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9305:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 6255,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9305:6:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9305:9:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9293:21:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 6271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 6266,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9344:5:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int88_$",
                                            "typeString": "type(int88)"
                                          },
                                          "typeName": {
                                            "id": 6265,
                                            "name": "int88",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9344:5:37",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_int88_$",
                                            "typeString": "type(int88)"
                                          }
                                        ],
                                        "id": 6264,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "9339:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 6267,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9339:11:37",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_int88",
                                        "typeString": "type(int88)"
                                      }
                                    },
                                    "id": 6268,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "min",
                                    "nodeType": "MemberAccess",
                                    "src": "9339:15:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int88",
                                      "typeString": "int88"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int88",
                                      "typeString": "int88"
                                    }
                                  ],
                                  "id": 6263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9332:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 6262,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9332:6:37",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9332:23:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 6270,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6254,
                                "src": "9359:1:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "9332:28:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6261,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9324:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 6272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9324:37:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6273,
                        "nodeType": "ExpressionStatement",
                        "src": "9324:37:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6276,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6254,
                              "src": "9384:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 6275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9378:5:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int88_$",
                              "typeString": "type(int88)"
                            },
                            "typeName": {
                              "id": 6274,
                              "name": "int88",
                              "nodeType": "ElementaryTypeName",
                              "src": "9378:5:37",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9378:8:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int88",
                            "typeString": "int88"
                          }
                        },
                        "functionReturnParameters": 6252,
                        "id": 6278,
                        "nodeType": "Return",
                        "src": "9371:15:37"
                      }
                    ]
                  },
                  "id": 6280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeNegInt88",
                  "nameLocation": "9229:13:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6248,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "9251:1:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 6280,
                        "src": "9243:9:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9243:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9242:11:37"
                  },
                  "returnParameters": {
                    "id": 6252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6251,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6280,
                        "src": "9276:5:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int88",
                          "typeString": "int88"
                        },
                        "typeName": {
                          "id": 6250,
                          "name": "int88",
                          "nodeType": "ElementaryTypeName",
                          "src": "9276:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int88",
                            "typeString": "int88"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9275:7:37"
                  },
                  "scope": 6281,
                  "src": "9220:173:37",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 6282,
              "src": "123:9272:37",
              "usedErrors": []
            }
          ],
          "src": "32:9364:37"
        },
        "id": 37
      },
      "wrapped-fcash/contracts/wfCashLogic.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/contracts/wfCashLogic.sol",
          "exportedSymbols": {
            "AccountBalance": [
              4951
            ],
            "AccountContext": [
              4940
            ],
            "Address": [
              3466
            ],
            "AddressUpgradeable": [
              1785
            ],
            "AssetRateParameters": [
              4958
            ],
            "AssetStorageState": [
              4853
            ],
            "BalanceActionWithTrades": [
              4878
            ],
            "BatchLend": [
              4861
            ],
            "CashGroupSettings": [
              4929
            ],
            "Constants": [
              3949
            ],
            "ContextUpgradeable": [
              1827
            ],
            "DateTime": [
              4373
            ],
            "DepositActionType": [
              4849
            ],
            "ERC777Upgradeable": [
              1343
            ],
            "EncodeDecode": [
              4826
            ],
            "IERC1820RegistryUpgradeable": [
              1917
            ],
            "IERC20": [
              2763
            ],
            "IERC20Metadata": [
              2788
            ],
            "IERC20Upgradeable": [
              151
            ],
            "IERC4626": [
              7243
            ],
            "IERC777": [
              3171
            ],
            "IERC777RecipientUpgradeable": [
              1363
            ],
            "IERC777SenderUpgradeable": [
              1383
            ],
            "IERC777Upgradeable": [
              1542
            ],
            "INotionalV2": [
              7474
            ],
            "IWETH9": [
              7263
            ],
            "IWrappedfCash": [
              7606
            ],
            "IWrappedfCashComplete": [
              7613
            ],
            "Initializable": [
              73
            ],
            "PortfolioAsset": [
              4904
            ],
            "ReentrancyGuard": [
              2685
            ],
            "SafeERC20": [
              3012
            ],
            "Strings": [
              3862
            ],
            "Token": [
              4890
            ],
            "TokenType": [
              4834
            ],
            "TradeActionType": [
              4841
            ],
            "wfCashBase": [
              5560
            ],
            "wfCashLogic": [
              7082
            ]
          },
          "id": 7083,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6283,
              "literals": [
                "solidity",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:38"
            },
            {
              "id": 6284,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "56:33:38"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/wfCashBase.sol",
              "file": "./wfCashBase.sol",
              "id": 6285,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7083,
              "sourceUnit": 5561,
              "src": "91:26:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/security/ReentrancyGuard.sol",
              "file": "openzeppelin-contracts-V4/security/ReentrancyGuard.sol",
              "id": 6286,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7083,
              "sourceUnit": 2686,
              "src": "118:64:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6288,
                    "name": "wfCashBase",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5560,
                    "src": "483:10:38"
                  },
                  "id": 6289,
                  "nodeType": "InheritanceSpecifier",
                  "src": "483:10:38"
                },
                {
                  "baseName": {
                    "id": 6290,
                    "name": "ReentrancyGuard",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2685,
                    "src": "495:15:38"
                  },
                  "id": 6291,
                  "nodeType": "InheritanceSpecifier",
                  "src": "495:15:38"
                }
              ],
              "canonicalName": "wfCashLogic",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 6287,
                "nodeType": "StructuredDocumentation",
                "src": "184:266:38",
                "text": "@dev This implementation contract is deployed as an UpgradeableBeacon. Each BeaconProxy\n that uses this contract as an implementation will call initialize to set its own fCash id.\n That identifier will represent the fCash that this ERC20 wrapper can hold."
              },
              "fullyImplemented": true,
              "id": 7082,
              "linearizedBaseContracts": [
                7082,
                2685,
                5560,
                7606,
                1343,
                151,
                1542,
                1827,
                73
              ],
              "name": "wfCashLogic",
              "nameLocation": "468:11:38",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 6295,
                  "libraryName": {
                    "id": 6292,
                    "name": "SafeERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3012,
                    "src": "523:9:38"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "517:27:38",
                  "typeName": {
                    "id": 6294,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6293,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2763,
                      "src": "537:6:38"
                    },
                    "referencedDeclaration": 2763,
                    "src": "537:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2763",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 6298,
                  "mutability": "constant",
                  "name": "ERC1155_ACCEPTED",
                  "nameLocation": "659:16:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7082,
                  "src": "634:54:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6296,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "634:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 6297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "678:10:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6301,
                  "mutability": "constant",
                  "name": "ERC1155_BATCH_ACCEPTED",
                  "nameLocation": "813:22:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7082,
                  "src": "788:60:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6299,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "788:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 6300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "838:10:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6314,
                    "nodeType": "Block",
                    "src": "933:2:38",
                    "statements": []
                  },
                  "id": 6315,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 6310,
                          "name": "_notional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6304,
                          "src": "915:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        {
                          "id": 6311,
                          "name": "_weth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6307,
                          "src": "926:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        }
                      ],
                      "id": 6312,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 6309,
                        "name": "wfCashBase",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5560,
                        "src": "904:10:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "904:28:38"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6304,
                        "mutability": "mutable",
                        "name": "_notional",
                        "nameLocation": "879:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "867:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                          "typeString": "contract INotionalV2"
                        },
                        "typeName": {
                          "id": 6303,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6302,
                            "name": "INotionalV2",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7474,
                            "src": "867:11:38"
                          },
                          "referencedDeclaration": 7474,
                          "src": "867:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_INotionalV2_$7474",
                            "typeString": "contract INotionalV2"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6307,
                        "mutability": "mutable",
                        "name": "_weth",
                        "nameLocation": "897:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "890:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH9_$7263",
                          "typeString": "contract IWETH9"
                        },
                        "typeName": {
                          "id": 6306,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6305,
                            "name": "IWETH9",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7263,
                            "src": "890:6:38"
                          },
                          "referencedDeclaration": 7263,
                          "src": "890:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH9_$7263",
                            "typeString": "contract IWETH9"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "866:37:38"
                  },
                  "returnParameters": {
                    "id": 6313,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "933:0:38"
                  },
                  "scope": 7082,
                  "src": "855:80:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7509
                  ],
                  "body": {
                    "id": 6336,
                    "nodeType": "Block",
                    "src": "1507:99:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6329,
                              "name": "depositAmountExternal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "1531:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6330,
                              "name": "fCashAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6320,
                              "src": "1554:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "id": 6331,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6322,
                              "src": "1567:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6332,
                              "name": "minImpliedRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6324,
                              "src": "1577:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 6333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1593:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6328,
                            "name": "_mintInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6517,
                            "src": "1517:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint88_$_t_address_$_t_uint32_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint88,address,uint32,bool)"
                            }
                          },
                          "id": 6334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1517:82:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6335,
                        "nodeType": "ExpressionStatement",
                        "src": "1517:82:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6316,
                    "nodeType": "StructuredDocumentation",
                    "src": "973:359:38",
                    "text": "@notice Lends deposit amount in return for fCashAmount using cTokens or aTokens\n @param depositAmountExternal amount of cash to deposit into this method\n @param fCashAmount amount of fCash to purchase (lend)\n @param receiver address to receive the fCash shares\n @param minImpliedRate minimum annualized interest rate to lend at"
                  },
                  "functionSelector": "0db8481c",
                  "id": 6337,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintViaAsset",
                  "nameLocation": "1346:12:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6326,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1498:8:38"
                  },
                  "parameters": {
                    "id": 6325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6318,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "1376:21:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6337,
                        "src": "1368:29:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1368:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6320,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "1414:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6337,
                        "src": "1407:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 6319,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "1407:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6322,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "1443:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6337,
                        "src": "1435:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6324,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "1468:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6337,
                        "src": "1461:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6323,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1461:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1358:130:38"
                  },
                  "returnParameters": {
                    "id": 6327,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1507:0:38"
                  },
                  "scope": 7082,
                  "src": "1337:269:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7520
                  ],
                  "body": {
                    "id": 6358,
                    "nodeType": "Block",
                    "src": "2150:98:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6351,
                              "name": "depositAmountExternal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6340,
                              "src": "2174:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6352,
                              "name": "fCashAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6342,
                              "src": "2197:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "id": 6353,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6344,
                              "src": "2210:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6354,
                              "name": "minImpliedRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6346,
                              "src": "2220:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 6355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2236:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6350,
                            "name": "_mintInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6517,
                            "src": "2160:13:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint88_$_t_address_$_t_uint32_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint88,address,uint32,bool)"
                            }
                          },
                          "id": 6356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2160:81:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6357,
                        "nodeType": "ExpressionStatement",
                        "src": "2160:81:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6338,
                    "nodeType": "StructuredDocumentation",
                    "src": "1612:358:38",
                    "text": "@notice Lends deposit amount in return for fCashAmount using underlying tokens\n @param depositAmountExternal amount of cash to deposit into this method\n @param fCashAmount amount of fCash to purchase (lend)\n @param receiver address to receive the fCash shares\n @param minImpliedRate minimum annualized interest rate to lend at"
                  },
                  "functionSelector": "29cf1405",
                  "id": 6359,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintViaUnderlying",
                  "nameLocation": "1984:17:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6348,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2141:8:38"
                  },
                  "parameters": {
                    "id": 6347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6340,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "2019:21:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6359,
                        "src": "2011:29:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6339,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2011:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6342,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "2057:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6359,
                        "src": "2050:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 6341,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "2050:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6344,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "2086:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6359,
                        "src": "2078:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6343,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2078:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6346,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "2111:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6359,
                        "src": "2104:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6345,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2104:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2001:130:38"
                  },
                  "returnParameters": {
                    "id": 6349,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2150:0:38"
                  },
                  "scope": 7082,
                  "src": "1975:273:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 6516,
                    "nodeType": "Block",
                    "src": "2457:2403:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2475:13:38",
                              "subExpression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6375,
                                  "name": "hasMatured",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5366,
                                  "src": "2476:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                    "typeString": "function () view returns (bool)"
                                  }
                                },
                                "id": 6376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2476:12:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "6643617368206d617475726564",
                              "id": 6378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2490:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb",
                                "typeString": "literal_string \"fCash matured\""
                              },
                              "value": "fCash matured"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_879c04849ed19b3ff43e201619951d8bdaabf4db7cedadf419ac993d9fbc89fb",
                                "typeString": "literal_string \"fCash matured\""
                              }
                            ],
                            "id": 6374,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2467:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2467:39:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6380,
                        "nodeType": "ExpressionStatement",
                        "src": "2467:39:38"
                      },
                      {
                        "assignments": [
                          6383,
                          6385
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6383,
                            "mutability": "mutable",
                            "name": "token",
                            "nameLocation": "2524:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6516,
                            "src": "2517:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2763",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "id": 6382,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6381,
                                "name": "IERC20",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2763,
                                "src": "2517:6:38"
                              },
                              "referencedDeclaration": 2763,
                              "src": "2517:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6385,
                            "mutability": "mutable",
                            "name": "isETH",
                            "nameLocation": "2536:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6516,
                            "src": "2531:10:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6384,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2531:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6389,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6387,
                              "name": "useUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6369,
                              "src": "2554:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6386,
                            "name": "getToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5559,
                            "src": "2545:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bool_$returns$_t_contract$_IERC20_$2763_$_t_bool_$",
                              "typeString": "function (bool) view returns (contract IERC20,bool)"
                            }
                          },
                          "id": 6388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2545:23:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_bool_$",
                            "typeString": "tuple(contract IERC20,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2516:52:38"
                      },
                      {
                        "assignments": [
                          6391
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6391,
                            "mutability": "mutable",
                            "name": "balanceBefore",
                            "nameLocation": "2586:13:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6516,
                            "src": "2578:21:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6390,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2578:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6406,
                        "initialValue": {
                          "condition": {
                            "id": 6392,
                            "name": "isETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6385,
                            "src": "2602:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6402,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2658:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  ],
                                  "id": 6401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2650:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6400,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2650:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2650:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 6398,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6383,
                                "src": "2634:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 6399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2702,
                              "src": "2634:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 6404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2634:30:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "2602:62:38",
                          "trueExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 6395,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2618:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 6394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2610:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6393,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2610:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2610:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "2610:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2578:86:38"
                      },
                      {
                        "condition": {
                          "id": 6407,
                          "name": "isETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6385,
                          "src": "3344:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6498,
                          "nodeType": "Block",
                          "src": "4068:542:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6463,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "4196:3:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6464,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "4196:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 6467,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "4216:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      ],
                                      "id": 6466,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4208:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6465,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4208:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6468,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4208:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6469,
                                    "name": "depositAmountExternal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6361,
                                    "src": "4223:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6460,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6383,
                                    "src": "4173:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 6462,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2845,
                                  "src": "4173:22:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2763_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 6470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4173:72:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6471,
                              "nodeType": "ExpressionStatement",
                              "src": "4173:72:38"
                            },
                            {
                              "assignments": [
                                6476
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6476,
                                  "mutability": "mutable",
                                  "name": "action",
                                  "nameLocation": "4332:6:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6498,
                                  "src": "4313:25:38",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct BatchLend[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 6474,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 6473,
                                        "name": "BatchLend",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 4861,
                                        "src": "4313:9:38"
                                      },
                                      "referencedDeclaration": 4861,
                                      "src": "4313:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BatchLend_$4861_storage_ptr",
                                        "typeString": "struct BatchLend"
                                      }
                                    },
                                    "id": 6475,
                                    "nodeType": "ArrayTypeName",
                                    "src": "4313:11:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_storage_$dyn_storage_ptr",
                                      "typeString": "struct BatchLend[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6487,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6479,
                                      "name": "getCurrencyId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5382,
                                      "src": "4387:13:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                                        "typeString": "function () view returns (uint16)"
                                      }
                                    },
                                    "id": 6480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4387:15:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6481,
                                      "name": "getMarketIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5442,
                                      "src": "4420:14:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                        "typeString": "function () view returns (uint8)"
                                      }
                                    },
                                    "id": 6482,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4420:16:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "id": 6483,
                                    "name": "fCashAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6363,
                                    "src": "4454:11:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    }
                                  },
                                  {
                                    "id": 6484,
                                    "name": "minImpliedRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6367,
                                    "src": "4483:14:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  {
                                    "id": 6485,
                                    "name": "useUnderlying",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6369,
                                    "src": "4515:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6477,
                                    "name": "EncodeDecode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4826,
                                    "src": "4341:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                      "typeString": "type(library EncodeDecode)"
                                    }
                                  },
                                  "id": 6478,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "encodeLendTrade",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4592,
                                  "src": "4341:28:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint16_$_t_uint8_$_t_uint88_$_t_uint32_$_t_bool_$returns$_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "function (uint16,uint8,uint88,uint32,bool) pure returns (struct BatchLend memory[] memory)"
                                  }
                                },
                                "id": 6486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4341:201:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BatchLend memory[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4313:229:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 6493,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "4585:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      ],
                                      "id": 6492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4577:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6491,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4577:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4577:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6495,
                                    "name": "action",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6476,
                                    "src": "4592:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct BatchLend memory[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct BatchLend memory[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6488,
                                    "name": "NotionalV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5135,
                                    "src": "4556:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                      "typeString": "contract INotionalV2"
                                    }
                                  },
                                  "id": 6490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "batchLend",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7473,
                                  "src": "4556:20:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_BatchLend_$4861_memory_ptr_$dyn_memory_ptr_$returns$__$",
                                    "typeString": "function (address,struct BatchLend memory[] memory) external"
                                  }
                                },
                                "id": 6496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4556:43:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6497,
                              "nodeType": "ExpressionStatement",
                              "src": "4556:43:38"
                            }
                          ]
                        },
                        "id": 6499,
                        "nodeType": "IfStatement",
                        "src": "3340:1270:38",
                        "trueBody": {
                          "id": 6459,
                          "nodeType": "Block",
                          "src": "3351:711:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6416,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3406:3:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6417,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3406:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 6420,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "3426:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      ],
                                      "id": 6419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3418:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6418,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3418:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3418:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6422,
                                    "name": "depositAmountExternal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6361,
                                    "src": "3433:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "components": [
                                          {
                                            "arguments": [
                                              {
                                                "id": 6411,
                                                "name": "WETH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5138,
                                                "src": "3381:4:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IWETH9_$7263",
                                                  "typeString": "contract IWETH9"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IWETH9_$7263",
                                                  "typeString": "contract IWETH9"
                                                }
                                              ],
                                              "id": 6410,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "3373:7:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 6409,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3373:7:38",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 6412,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3373:13:38",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "id": 6413,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "3372:15:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 6408,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2763,
                                      "src": "3365:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 6414,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3365:23:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 6415,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2845,
                                  "src": "3365:40:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2763_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 6423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3365:90:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6424,
                              "nodeType": "ExpressionStatement",
                              "src": "3365:90:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6428,
                                    "name": "depositAmountExternal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6361,
                                    "src": "3483:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6425,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5138,
                                    "src": "3469:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWETH9_$7263",
                                      "typeString": "contract IWETH9"
                                    }
                                  },
                                  "id": 6427,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7253,
                                  "src": "3469:13:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) external"
                                  }
                                },
                                "id": 6429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3469:36:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6430,
                              "nodeType": "ExpressionStatement",
                              "src": "3469:36:38"
                            },
                            {
                              "assignments": [
                                6435
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6435,
                                  "mutability": "mutable",
                                  "name": "action",
                                  "nameLocation": "3553:6:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6459,
                                  "src": "3520:39:38",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct BalanceActionWithTrades[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 6433,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 6432,
                                        "name": "BalanceActionWithTrades",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 4878,
                                        "src": "3520:23:38"
                                      },
                                      "referencedDeclaration": 4878,
                                      "src": "3520:23:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                                        "typeString": "struct BalanceActionWithTrades"
                                      }
                                    },
                                    "id": 6434,
                                    "nodeType": "ArrayTypeName",
                                    "src": "3520:25:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                                      "typeString": "struct BalanceActionWithTrades[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6446,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6438,
                                      "name": "getCurrencyId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5382,
                                      "src": "3611:13:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                                        "typeString": "function () view returns (uint16)"
                                      }
                                    },
                                    "id": 6439,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3611:15:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6440,
                                      "name": "getMarketIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5442,
                                      "src": "3644:14:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                        "typeString": "function () view returns (uint8)"
                                      }
                                    },
                                    "id": 6441,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3644:16:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "id": 6442,
                                    "name": "depositAmountExternal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6361,
                                    "src": "3678:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6443,
                                    "name": "fCashAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6363,
                                    "src": "3717:11:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    }
                                  },
                                  {
                                    "id": 6444,
                                    "name": "minImpliedRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6367,
                                    "src": "3746:14:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    },
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6436,
                                    "name": "EncodeDecode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4826,
                                    "src": "3562:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                      "typeString": "type(library EncodeDecode)"
                                    }
                                  },
                                  "id": 6437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "encodeLendETHTrade",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4712,
                                  "src": "3562:31:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint16_$_t_uint8_$_t_uint256_$_t_uint88_$_t_uint32_$returns$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "function (uint16,uint8,uint256,uint88,uint32) pure returns (struct BalanceActionWithTrades memory[] memory)"
                                  }
                                },
                                "id": 6445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3562:212:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct BalanceActionWithTrades memory[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3520:254:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 6454,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "4037:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      ],
                                      "id": 6453,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4029:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6452,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4029:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6455,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4029:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6456,
                                    "name": "action",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6435,
                                    "src": "4044:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct BalanceActionWithTrades memory[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct BalanceActionWithTrades memory[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct BalanceActionWithTrades memory[] memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6447,
                                      "name": "NotionalV2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5135,
                                      "src": "3961:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                        "typeString": "contract INotionalV2"
                                      }
                                    },
                                    "id": 6449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "batchBalanceAndTradeAction",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7464,
                                    "src": "3961:37:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_address_$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$returns$__$",
                                      "typeString": "function (address,struct BalanceActionWithTrades memory[] memory) payable external"
                                    }
                                  },
                                  "id": 6451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "value"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 6450,
                                      "name": "depositAmountExternal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6361,
                                      "src": "4006:21:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "3961:67:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_address_$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$returns$__$value",
                                    "typeString": "function (address,struct BalanceActionWithTrades memory[] memory) payable external"
                                  }
                                },
                                "id": 6457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3961:90:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6458,
                              "nodeType": "ExpressionStatement",
                              "src": "3961:90:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6501,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6365,
                              "src": "4743:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6502,
                              "name": "fCashAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6363,
                              "src": "4753:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 6503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4766:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "",
                              "id": 6504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4770:2:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 6505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4774:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6500,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              824,
                              904
                            ],
                            "referencedDeclaration": 904,
                            "src": "4737:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 6506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4737:43:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6507,
                        "nodeType": "ExpressionStatement",
                        "src": "4737:43:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6509,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6383,
                              "src": "4813:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "expression": {
                                "id": 6510,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4820:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4820:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6512,
                              "name": "isETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6385,
                              "src": "4832:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6513,
                              "name": "balanceBefore",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6391,
                              "src": "4839:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6508,
                            "name": "_sendTokensToReceiver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7055,
                            "src": "4791:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (contract IERC20,address,bool,uint256) returns (uint256)"
                            }
                          },
                          "id": 6514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4791:62:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6515,
                        "nodeType": "ExpressionStatement",
                        "src": "4791:62:38"
                      }
                    ]
                  },
                  "id": 6517,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6372,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6371,
                        "name": "nonReentrant",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2684,
                        "src": "2444:12:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2444:12:38"
                    }
                  ],
                  "name": "_mintInternal",
                  "nameLocation": "2263:13:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6361,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "2294:21:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6517,
                        "src": "2286:29:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6360,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2286:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6363,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "2332:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6517,
                        "src": "2325:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 6362,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "2325:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6365,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "2361:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6517,
                        "src": "2353:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6364,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2353:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6367,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "2386:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6517,
                        "src": "2379:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6366,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2379:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6369,
                        "mutability": "mutable",
                        "name": "useUnderlying",
                        "nameLocation": "2415:13:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6517,
                        "src": "2410:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6368,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2410:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2276:158:38"
                  },
                  "returnParameters": {
                    "id": 6373,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2457:0:38"
                  },
                  "scope": 7082,
                  "src": "2254:2606:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6644,
                    "nodeType": "Block",
                    "src": "5287:1545:38",
                    "statements": [
                      {
                        "assignments": [
                          6536
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6536,
                            "mutability": "mutable",
                            "name": "fCashID",
                            "nameLocation": "5305:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6644,
                            "src": "5297:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6535,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5297:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6539,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6537,
                            "name": "getfCashId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5336,
                            "src": "5315:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 6538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5315:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5297:30:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 6547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 6541,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5415:3:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6542,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5415:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 6545,
                                        "name": "NotionalV2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5135,
                                        "src": "5437:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                          "typeString": "contract INotionalV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                          "typeString": "contract INotionalV2"
                                        }
                                      ],
                                      "id": 6544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5429:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6543,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5429:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6546,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5429:19:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5415:33:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6548,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6524,
                                    "src": "5557:3:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 6549,
                                    "name": "fCashID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6536,
                                    "src": "5564:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5557:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5415:156:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 6557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 6554,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6526,
                                      "src": "5649:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6553,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5642:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 6552,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5642:6:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 6555,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5642:14:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6556,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5659:1:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5642:18:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5415:245:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e76616c6964",
                              "id": 6559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5674:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345",
                                "typeString": "literal_string \"Invalid\""
                              },
                              "value": "Invalid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c84d91f537f720db0d8ff8472db06e97a59d22ac83366d0af861134338d0e345",
                                "typeString": "literal_string \"Invalid\""
                              }
                            ],
                            "id": 6540,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5394:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5394:299:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6561,
                        "nodeType": "ExpressionStatement",
                        "src": "5394:299:38"
                      },
                      {
                        "assignments": [
                          6564
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6564,
                            "mutability": "mutable",
                            "name": "ac",
                            "nameLocation": "5866:2:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6644,
                            "src": "5844:24:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AccountContext_$4940_memory_ptr",
                              "typeString": "struct AccountContext"
                            },
                            "typeName": {
                              "id": 6563,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6562,
                                "name": "AccountContext",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4940,
                                "src": "5844:14:38"
                              },
                              "referencedDeclaration": 4940,
                              "src": "5844:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AccountContext_$4940_storage_ptr",
                                "typeString": "struct AccountContext"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6572,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6569,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5908:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 6568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5900:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6567,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5900:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5900:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 6565,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "5871:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 6566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAccountContext",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7294,
                            "src": "5871:28:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_AccountContext_$4940_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct AccountContext memory)"
                            }
                          },
                          "id": 6571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5871:43:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AccountContext_$4940_memory_ptr",
                            "typeString": "struct AccountContext memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5844:70:38"
                      },
                      {
                        "assignments": [
                          6577
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6577,
                            "mutability": "mutable",
                            "name": "assets",
                            "nameLocation": "5948:6:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6644,
                            "src": "5924:30:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct PortfolioAsset[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6575,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 6574,
                                  "name": "PortfolioAsset",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 4904,
                                  "src": "5924:14:38"
                                },
                                "referencedDeclaration": 4904,
                                "src": "5924:14:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PortfolioAsset_$4904_storage_ptr",
                                  "typeString": "struct PortfolioAsset"
                                }
                              },
                              "id": 6576,
                              "nodeType": "ArrayTypeName",
                              "src": "5924:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_storage_$dyn_storage_ptr",
                                "typeString": "struct PortfolioAsset[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6585,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6582,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5996:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 6581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5988:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6580,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5988:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5988:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 6578,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "5957:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 6579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAccountPortfolio",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7303,
                            "src": "5957:30:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct PortfolioAsset memory[] memory)"
                            }
                          },
                          "id": 6584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5957:45:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct PortfolioAsset memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5924:78:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 6590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 6587,
                                      "name": "ac",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6564,
                                      "src": "6033:2:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AccountContext_$4940_memory_ptr",
                                        "typeString": "struct AccountContext memory"
                                      }
                                    },
                                    "id": 6588,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "hasDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4933,
                                    "src": "6033:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30783030",
                                    "id": 6589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6047:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x00"
                                  },
                                  "src": "6033:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 6591,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6577,
                                      "src": "6067:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct PortfolioAsset memory[] memory"
                                      }
                                    },
                                    "id": 6592,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "6067:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 6593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6084:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6067:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6033:52:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 6598,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6577,
                                          "src": "6147:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct PortfolioAsset memory[] memory"
                                          }
                                        },
                                        "id": 6600,
                                        "indexExpression": {
                                          "hexValue": "30",
                                          "id": 6599,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6154:1:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6147:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PortfolioAsset_$4904_memory_ptr",
                                          "typeString": "struct PortfolioAsset memory"
                                        }
                                      },
                                      "id": 6601,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currencyId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4892,
                                      "src": "6147:20:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 6602,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6577,
                                          "src": "6185:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct PortfolioAsset memory[] memory"
                                          }
                                        },
                                        "id": 6604,
                                        "indexExpression": {
                                          "hexValue": "30",
                                          "id": 6603,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6192:1:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6185:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PortfolioAsset_$4904_memory_ptr",
                                          "typeString": "struct PortfolioAsset memory"
                                        }
                                      },
                                      "id": 6605,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maturity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4894,
                                      "src": "6185:18:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 6606,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6577,
                                          "src": "6221:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct PortfolioAsset memory[] memory"
                                          }
                                        },
                                        "id": 6608,
                                        "indexExpression": {
                                          "hexValue": "30",
                                          "id": 6607,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6228:1:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6221:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PortfolioAsset_$4904_memory_ptr",
                                          "typeString": "struct PortfolioAsset memory"
                                        }
                                      },
                                      "id": 6609,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "assetType",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4896,
                                      "src": "6221:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6596,
                                      "name": "EncodeDecode",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4826,
                                      "src": "6101:12:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                        "typeString": "type(library EncodeDecode)"
                                      }
                                    },
                                    "id": 6597,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "encodeERC1155Id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4494,
                                    "src": "6101:28:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6101:153:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 6611,
                                  "name": "fCashID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6536,
                                  "src": "6258:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6101:164:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6033:232:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6586,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6012:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 6614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6012:263:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6615,
                        "nodeType": "ExpressionStatement",
                        "src": "6012:263:38"
                      },
                      {
                        "assignments": [
                          6617
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6617,
                            "mutability": "mutable",
                            "name": "userData",
                            "nameLocation": "6422:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6644,
                            "src": "6409:21:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6616,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6409:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6618,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6409:21:38"
                      },
                      {
                        "assignments": [
                          6620
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6620,
                            "mutability": "mutable",
                            "name": "operatorData",
                            "nameLocation": "6453:12:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6644,
                            "src": "6440:25:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6619,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6440:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6621,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6440:25:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6622,
                            "name": "_operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6520,
                            "src": "6479:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 6623,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6522,
                            "src": "6492:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6479:18:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "expression": {
                            "id": 6631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 6629,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6620,
                              "src": "6530:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 6630,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6528,
                              "src": "6545:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "src": "6530:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 6632,
                          "nodeType": "ExpressionStatement",
                          "src": "6530:20:38"
                        },
                        "id": 6633,
                        "nodeType": "IfStatement",
                        "src": "6475:75:38",
                        "trueBody": {
                          "expression": {
                            "id": 6627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 6625,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6617,
                              "src": "6499:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 6626,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6528,
                              "src": "6510:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "src": "6499:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 6628,
                          "nodeType": "ExpressionStatement",
                          "src": "6499:16:38"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6635,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6522,
                              "src": "6694:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6636,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6526,
                              "src": "6701:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6637,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6617,
                              "src": "6709:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 6638,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6620,
                              "src": "6719:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 6639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6733:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6634,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              824,
                              904
                            ],
                            "referencedDeclaration": 904,
                            "src": "6688:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory,bool)"
                            }
                          },
                          "id": 6640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6688:51:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6641,
                        "nodeType": "ExpressionStatement",
                        "src": "6688:51:38"
                      },
                      {
                        "expression": {
                          "id": 6642,
                          "name": "ERC1155_ACCEPTED",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6298,
                          "src": "6809:16:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 6534,
                        "id": 6643,
                        "nodeType": "Return",
                        "src": "6802:23:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6518,
                    "nodeType": "StructuredDocumentation",
                    "src": "4866:219:38",
                    "text": "@notice This hook will be called every time this contract receives fCash, will validate that\n this is the correct fCash and then mint the corresponding amount of wrapped fCash tokens\n back to the user."
                  },
                  "functionSelector": "f23a6e61",
                  "id": 6645,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6531,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6530,
                        "name": "nonReentrant",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2684,
                        "src": "5257:12:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5257:12:38"
                    }
                  ],
                  "name": "onERC1155Received",
                  "nameLocation": "5099:17:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6520,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nameLocation": "5134:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6645,
                        "src": "5126:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6519,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5126:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6522,
                        "mutability": "mutable",
                        "name": "_from",
                        "nameLocation": "5161:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6645,
                        "src": "5153:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6521,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5153:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6524,
                        "mutability": "mutable",
                        "name": "_id",
                        "nameLocation": "5184:3:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6645,
                        "src": "5176:11:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5176:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6526,
                        "mutability": "mutable",
                        "name": "_value",
                        "nameLocation": "5205:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6645,
                        "src": "5197:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5197:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6528,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "5236:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6645,
                        "src": "5221:20:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6527,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5221:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5116:131:38"
                  },
                  "returnParameters": {
                    "id": 6534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6533,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6645,
                        "src": "5279:6:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 6532,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "5279:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5278:8:38"
                  },
                  "scope": 7082,
                  "src": "5090:1742:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7528
                  ],
                  "body": {
                    "id": 6667,
                    "nodeType": "Block",
                    "src": "7050:168:38",
                    "statements": [
                      {
                        "assignments": [
                          6656
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6656,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "7073:4:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6667,
                            "src": "7060:17:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6655,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7060:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6661,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6659,
                              "name": "opts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6651,
                              "src": "7091:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            ],
                            "expression": {
                              "id": 6657,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7080:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "7080:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 6660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7080:16:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7060:36:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6663,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6648,
                              "src": "7198:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6664,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6656,
                              "src": "7206:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6662,
                            "name": "burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 486,
                            "src": "7193:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,bytes memory)"
                            }
                          },
                          "id": 6665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7193:18:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6666,
                        "nodeType": "ExpressionStatement",
                        "src": "7193:18:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6646,
                    "nodeType": "StructuredDocumentation",
                    "src": "6879:94:38",
                    "text": "@notice Redeems tokens using custom options\n @dev re-entrancy is protected on _burn"
                  },
                  "functionSelector": "d84878b8",
                  "id": 6668,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeem",
                  "nameLocation": "6987:6:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6653,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7041:8:38"
                  },
                  "parameters": {
                    "id": 6652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6648,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7002:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6668,
                        "src": "6994:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6647,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6994:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6651,
                        "mutability": "mutable",
                        "name": "opts",
                        "nameLocation": "7028:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6668,
                        "src": "7010:22:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                          "typeString": "struct IWrappedfCash.RedeemOpts"
                        },
                        "typeName": {
                          "id": 6650,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6649,
                            "name": "RedeemOpts",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7490,
                            "src": "7010:10:38"
                          },
                          "referencedDeclaration": 7490,
                          "src": "7010:10:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RedeemOpts_$7490_storage_ptr",
                            "typeString": "struct IWrappedfCash.RedeemOpts"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6993:40:38"
                  },
                  "returnParameters": {
                    "id": 6654,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7050:0:38"
                  },
                  "scope": 7082,
                  "src": "6978:240:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7537
                  ],
                  "body": {
                    "id": 6689,
                    "nodeType": "Block",
                    "src": "7446:258:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6680,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6671,
                              "src": "7476:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "66616c7365",
                                  "id": 6682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7545:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 6683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7583:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "id": 6684,
                                  "name": "receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6673,
                                  "src": "7616:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 6685,
                                  "name": "maxImpliedRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6675,
                                  "src": "7658:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "id": 6681,
                                "name": "RedeemOpts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7490,
                                "src": "7496:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_RedeemOpts_$7490_storage_ptr_$",
                                  "typeString": "type(struct IWrappedfCash.RedeemOpts storage pointer)"
                                }
                              },
                              "id": 6686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "redeemToUnderlying",
                                "transferfCash",
                                "receiver",
                                "maxImpliedRate"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "7496:191:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            ],
                            "id": 6679,
                            "name": "redeem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6668,
                            "src": "7456:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_struct$_RedeemOpts_$7490_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,struct IWrappedfCash.RedeemOpts memory)"
                            }
                          },
                          "id": 6687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7456:241:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6688,
                        "nodeType": "ExpressionStatement",
                        "src": "7456:241:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6669,
                    "nodeType": "StructuredDocumentation",
                    "src": "7224:89:38",
                    "text": "@notice Redeems tokens to asset tokens\n @dev re-entrancy is protected on _burn"
                  },
                  "functionSelector": "3d3192cb",
                  "id": 6690,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeemToAsset",
                  "nameLocation": "7327:13:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6677,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7437:8:38"
                  },
                  "parameters": {
                    "id": 6676,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6671,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7358:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6690,
                        "src": "7350:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6670,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7350:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6673,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "7382:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6690,
                        "src": "7374:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6672,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7374:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6675,
                        "mutability": "mutable",
                        "name": "maxImpliedRate",
                        "nameLocation": "7407:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6690,
                        "src": "7400:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6674,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7400:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7340:87:38"
                  },
                  "returnParameters": {
                    "id": 6678,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7446:0:38"
                  },
                  "scope": 7082,
                  "src": "7318:386:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7546
                  ],
                  "body": {
                    "id": 6711,
                    "nodeType": "Block",
                    "src": "7935:257:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6702,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6693,
                              "src": "7965:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "74727565",
                                  "id": 6704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8034:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 6705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8071:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "id": 6706,
                                  "name": "receiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6695,
                                  "src": "8104:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 6707,
                                  "name": "maxImpliedRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6697,
                                  "src": "8146:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "id": 6703,
                                "name": "RedeemOpts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7490,
                                "src": "7985:10:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_RedeemOpts_$7490_storage_ptr_$",
                                  "typeString": "type(struct IWrappedfCash.RedeemOpts storage pointer)"
                                }
                              },
                              "id": 6708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "redeemToUnderlying",
                                "transferfCash",
                                "receiver",
                                "maxImpliedRate"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "7985:190:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            ],
                            "id": 6701,
                            "name": "redeem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6668,
                            "src": "7945:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_struct$_RedeemOpts_$7490_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,struct IWrappedfCash.RedeemOpts memory)"
                            }
                          },
                          "id": 6709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7945:240:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6710,
                        "nodeType": "ExpressionStatement",
                        "src": "7945:240:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6691,
                    "nodeType": "StructuredDocumentation",
                    "src": "7710:87:38",
                    "text": "@notice Redeems tokens to underlying\n @dev re-entrancy is protected on _burn"
                  },
                  "functionSelector": "745d08d9",
                  "id": 6712,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeemToUnderlying",
                  "nameLocation": "7811:18:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6699,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7926:8:38"
                  },
                  "parameters": {
                    "id": 6698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6693,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7847:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6712,
                        "src": "7839:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6692,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7839:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6695,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "7871:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6712,
                        "src": "7863:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7863:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6697,
                        "mutability": "mutable",
                        "name": "maxImpliedRate",
                        "nameLocation": "7896:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6712,
                        "src": "7889:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6696,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7889:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7829:87:38"
                  },
                  "returnParameters": {
                    "id": 6700,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7935:0:38"
                  },
                  "scope": 7082,
                  "src": "7802:390:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1067
                  ],
                  "body": {
                    "id": 6851,
                    "nodeType": "Block",
                    "src": "8499:2357:38",
                    "statements": [
                      {
                        "assignments": [
                          6728
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6728,
                            "mutability": "mutable",
                            "name": "initialTotalSupply",
                            "nameLocation": "8605:18:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6851,
                            "src": "8597:26:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6727,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8597:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6731,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6729,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 373,
                            "src": "8626:11:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 6730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8626:13:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8597:42:38"
                      },
                      {
                        "assignments": [
                          6734
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6734,
                            "mutability": "mutable",
                            "name": "opts",
                            "nameLocation": "8667:4:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6851,
                            "src": "8649:22:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                              "typeString": "struct IWrappedfCash.RedeemOpts"
                            },
                            "typeName": {
                              "id": 6733,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6732,
                                "name": "RedeemOpts",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 7490,
                                "src": "8649:10:38"
                              },
                              "referencedDeclaration": 7490,
                              "src": "8649:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_storage_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6741,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6737,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6719,
                              "src": "8685:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6738,
                                  "name": "RedeemOpts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7490,
                                  "src": "8696:10:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_RedeemOpts_$7490_storage_ptr_$",
                                    "typeString": "type(struct IWrappedfCash.RedeemOpts storage pointer)"
                                  }
                                }
                              ],
                              "id": 6739,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8695:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_RedeemOpts_$7490_storage_ptr_$",
                                "typeString": "type(struct IWrappedfCash.RedeemOpts storage pointer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_struct$_RedeemOpts_$7490_storage_ptr_$",
                                "typeString": "type(struct IWrappedfCash.RedeemOpts storage pointer)"
                              }
                            ],
                            "expression": {
                              "id": 6735,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8674:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "8674:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8674:34:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                            "typeString": "struct IWrappedfCash.RedeemOpts memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8649:59:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 6743,
                                  "name": "opts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6734,
                                  "src": "8726:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                    "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                  }
                                },
                                "id": 6744,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "receiver",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7487,
                                "src": "8726:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 6747,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8751:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 6746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8743:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6745,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8743:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8743:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8726:27:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265636569766572206973207a65726f2061646472657373",
                              "id": 6750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8755:26:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed",
                                "typeString": "literal_string \"Receiver is zero address\""
                              },
                              "value": "Receiver is zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_506fd93c374678aed6d3e63759c440ddbf879c6e0e08df086a7cc440975f89ed",
                                "typeString": "literal_string \"Receiver is zero address\""
                              }
                            ],
                            "id": 6742,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8718:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8718:64:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6752,
                        "nodeType": "ExpressionStatement",
                        "src": "8718:64:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6756,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6715,
                              "src": "8955:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6757,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6717,
                              "src": "8961:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6758,
                              "name": "userData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6719,
                              "src": "8969:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 6759,
                              "name": "operatorData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6721,
                              "src": "8979:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 6753,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "8943:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_super$_wfCashLogic_$7082_$",
                                "typeString": "type(contract super wfCashLogic)"
                              }
                            },
                            "id": 6755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1067,
                            "src": "8943:11:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,bytes memory,bytes memory)"
                            }
                          },
                          "id": 6760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8943:49:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6761,
                        "nodeType": "ExpressionStatement",
                        "src": "8943:49:38"
                      },
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6762,
                            "name": "hasMatured",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "9007:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                              "typeString": "function () view returns (bool)"
                            }
                          },
                          "id": 6763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9007:12:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "expression": {
                              "id": 6820,
                              "name": "opts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6734,
                              "src": "10000:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                "typeString": "struct IWrappedfCash.RedeemOpts memory"
                              }
                            },
                            "id": 6821,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferfCash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7485,
                            "src": "10000:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 6848,
                            "nodeType": "Block",
                            "src": "10668:182:38",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 6839,
                                        "name": "opts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6734,
                                        "src": "10710:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                          "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                        }
                                      },
                                      "id": 6840,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "receiver",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7487,
                                      "src": "10710:13:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 6841,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6717,
                                      "src": "10741:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 6842,
                                        "name": "opts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6734,
                                        "src": "10765:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                          "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                        }
                                      },
                                      "id": 6843,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "redeemToUnderlying",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7483,
                                      "src": "10765:23:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 6844,
                                        "name": "opts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6734,
                                        "src": "10806:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                          "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                        }
                                      },
                                      "id": 6845,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "maxImpliedRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7489,
                                      "src": "10806:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    ],
                                    "id": 6838,
                                    "name": "_sellfCash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6988,
                                    "src": "10682:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint32_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256,bool,uint32) returns (uint256)"
                                    }
                                  },
                                  "id": 6846,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10682:157:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6847,
                                "nodeType": "ExpressionStatement",
                                "src": "10682:157:38"
                              }
                            ]
                          },
                          "id": 6849,
                          "nodeType": "IfStatement",
                          "src": "9996:854:38",
                          "trueBody": {
                            "id": 6837,
                            "nodeType": "Block",
                            "src": "10020:642:38",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 6827,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "10417:4:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                            "typeString": "contract wfCashLogic"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                            "typeString": "contract wfCashLogic"
                                          }
                                        ],
                                        "id": 6826,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10409:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 6825,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10409:7:38",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6828,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10409:13:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 6829,
                                        "name": "opts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6734,
                                        "src": "10470:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                          "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                        }
                                      },
                                      "id": 6830,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "receiver",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7487,
                                      "src": "10470:13:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 6831,
                                        "name": "getfCashId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5336,
                                        "src": "10528:10:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                          "typeString": "function () view returns (uint256)"
                                        }
                                      },
                                      "id": 6832,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10528:12:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6833,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6717,
                                      "src": "10578:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6834,
                                      "name": "userData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6719,
                                      "src": "10629:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6822,
                                      "name": "NotionalV2",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5135,
                                      "src": "10364:10:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                        "typeString": "contract INotionalV2"
                                      }
                                    },
                                    "id": 6824,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "safeTransferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7439,
                                    "src": "10364:27:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (address,address,uint256,uint256,bytes memory) payable external"
                                    }
                                  },
                                  "id": 6835,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10364:287:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 6836,
                                "nodeType": "ExpressionStatement",
                                "src": "10364:287:38"
                              }
                            ]
                          }
                        },
                        "id": 6850,
                        "nodeType": "IfStatement",
                        "src": "9003:1847:38",
                        "trueBody": {
                          "id": 6819,
                          "nodeType": "Block",
                          "src": "9021:969:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 6769,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9308:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      ],
                                      "id": 6768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9300:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6767,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9300:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9300:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6764,
                                    "name": "NotionalV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5135,
                                    "src": "9275:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                      "typeString": "contract INotionalV2"
                                    }
                                  },
                                  "id": 6766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "settleAccount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7444,
                                  "src": "9275:24:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address) external"
                                  }
                                },
                                "id": 6771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9275:39:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6772,
                              "nodeType": "ExpressionStatement",
                              "src": "9275:39:38"
                            },
                            {
                              "assignments": [
                                6774
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6774,
                                  "mutability": "mutable",
                                  "name": "currencyId",
                                  "nameLocation": "9335:10:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6819,
                                  "src": "9328:17:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "typeName": {
                                    "id": 6773,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9328:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6777,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6775,
                                  "name": "getCurrencyId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5382,
                                  "src": "9348:13:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                                    "typeString": "function () view returns (uint16)"
                                  }
                                },
                                "id": 6776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9348:15:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9328:35:38"
                            },
                            {
                              "assignments": [
                                6779,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6779,
                                  "mutability": "mutable",
                                  "name": "cashBalance",
                                  "nameLocation": "9386:11:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6819,
                                  "src": "9379:18:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "typeName": {
                                    "id": 6778,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9379:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null,
                                null
                              ],
                              "id": 6788,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 6782,
                                    "name": "currencyId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6774,
                                    "src": "9444:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 6785,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9464:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                          "typeString": "contract wfCashLogic"
                                        }
                                      ],
                                      "id": 6784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9456:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6783,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9456:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6786,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9456:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6780,
                                    "name": "NotionalV2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5135,
                                    "src": "9415:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                      "typeString": "contract INotionalV2"
                                    }
                                  },
                                  "id": 6781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getAccountBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7316,
                                  "src": "9415:28:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint16_$_t_address_$returns$_t_int256_$_t_int256_$_t_uint256_$",
                                    "typeString": "function (uint16,address) view external returns (int256,int256,uint256)"
                                  }
                                },
                                "id": 6787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9415:55:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$_t_uint256_$",
                                  "typeString": "tuple(int256,int256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9378:92:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 6792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "30",
                                      "id": 6790,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9492:1:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 6791,
                                      "name": "cashBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6779,
                                      "src": "9496:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "9492:15:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e6567617469766520436173682042616c616e6365",
                                    "id": 6793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9509:23:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826",
                                      "typeString": "literal_string \"Negative Cash Balance\""
                                    },
                                    "value": "Negative Cash Balance"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_f23f7151bb575b66e281a22ee384ed44e4d40a742b9798bc0cdb4298a5b1b826",
                                      "typeString": "literal_string \"Negative Cash Balance\""
                                    }
                                  ],
                                  "id": 6789,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9484:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9484:49:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6795,
                              "nodeType": "ExpressionStatement",
                              "src": "9484:49:38"
                            },
                            {
                              "assignments": [
                                6797
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6797,
                                  "mutability": "mutable",
                                  "name": "assetInternalCashClaim",
                                  "nameLocation": "9635:22:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6819,
                                  "src": "9627:30:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6796,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9627:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6807,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6803,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 6800,
                                            "name": "cashBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6779,
                                            "src": "9669:11:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 6799,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9661:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 6798,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9661:7:38",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 6801,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9661:20:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 6802,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6717,
                                        "src": "9684:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9661:29:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6804,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "9660:31:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 6805,
                                  "name": "initialTotalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6728,
                                  "src": "9694:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9660:52:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9627:85:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6809,
                                    "name": "currencyId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6774,
                                    "src": "9830:10:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6810,
                                      "name": "opts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6734,
                                      "src": "9858:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                        "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                      }
                                    },
                                    "id": 6811,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "receiver",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7487,
                                    "src": "9858:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 6813,
                                        "name": "assetInternalCashClaim",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6797,
                                        "src": "9901:22:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 6812,
                                      "name": "_safeUint88",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7081,
                                      "src": "9889:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint88_$",
                                        "typeString": "function (uint256) pure returns (uint88)"
                                      }
                                    },
                                    "id": 6814,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9889:35:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6815,
                                      "name": "opts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6734,
                                      "src": "9942:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                                        "typeString": "struct IWrappedfCash.RedeemOpts memory"
                                      }
                                    },
                                    "id": 6816,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "redeemToUnderlying",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7483,
                                    "src": "9942:23:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 6808,
                                  "name": "_withdrawCashToAccount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6910,
                                  "src": "9790:22:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_address_$_t_uint88_$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (uint16,address,uint88,bool) returns (uint256)"
                                  }
                                },
                                "id": 6817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9790:189:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6818,
                              "nodeType": "ExpressionStatement",
                              "src": "9790:189:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6713,
                    "nodeType": "StructuredDocumentation",
                    "src": "8198:132:38",
                    "text": "@notice Called before tokens are burned (redemption) and so we will handle\n the fCash properly before and after maturity."
                  },
                  "id": 6852,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6725,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6724,
                        "name": "nonReentrant",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2684,
                        "src": "8486:12:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8486:12:38"
                    }
                  ],
                  "name": "_burn",
                  "nameLocation": "8344:5:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6723,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8477:8:38"
                  },
                  "parameters": {
                    "id": 6722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6715,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "8367:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6852,
                        "src": "8359:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6714,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8359:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6717,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8389:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6852,
                        "src": "8381:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6716,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8381:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6719,
                        "mutability": "mutable",
                        "name": "userData",
                        "nameLocation": "8418:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6852,
                        "src": "8405:21:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6718,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8405:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6721,
                        "mutability": "mutable",
                        "name": "operatorData",
                        "nameLocation": "8449:12:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6852,
                        "src": "8436:25:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6720,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8436:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8349:118:38"
                  },
                  "returnParameters": {
                    "id": 6726,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8499:0:38"
                  },
                  "scope": 7082,
                  "src": "8335:2521:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6909,
                    "nodeType": "Block",
                    "src": "11125:335:38",
                    "statements": [
                      {
                        "assignments": [
                          6868,
                          6870
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6868,
                            "mutability": "mutable",
                            "name": "token",
                            "nameLocation": "11143:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6909,
                            "src": "11136:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2763",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "id": 6867,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6866,
                                "name": "IERC20",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2763,
                                "src": "11136:6:38"
                              },
                              "referencedDeclaration": 2763,
                              "src": "11136:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6870,
                            "mutability": "mutable",
                            "name": "isETH",
                            "nameLocation": "11155:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6909,
                            "src": "11150:10:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6869,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11150:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6874,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6872,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6861,
                              "src": "11173:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6871,
                            "name": "getToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5559,
                            "src": "11164:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bool_$returns$_t_contract$_IERC20_$2763_$_t_bool_$",
                              "typeString": "function (bool) view returns (contract IERC20,bool)"
                            }
                          },
                          "id": 6873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11164:22:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_bool_$",
                            "typeString": "tuple(contract IERC20,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11135:51:38"
                      },
                      {
                        "assignments": [
                          6876
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6876,
                            "mutability": "mutable",
                            "name": "balanceBefore",
                            "nameLocation": "11204:13:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6909,
                            "src": "11196:21:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6875,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11196:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6891,
                        "initialValue": {
                          "condition": {
                            "id": 6877,
                            "name": "isETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6870,
                            "src": "11220:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6887,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11276:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  ],
                                  "id": 6886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11268:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6885,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11268:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11268:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 6883,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6868,
                                "src": "11252:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 6884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2702,
                              "src": "11252:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 6889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11252:30:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "11220:62:38",
                          "trueExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 6880,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "11236:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 6879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11228:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6878,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11228:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11228:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "11228:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11196:86:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6895,
                              "name": "currencyId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6855,
                              "src": "11313:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "id": 6896,
                              "name": "assetInternalCashClaim",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6859,
                              "src": "11325:22:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "id": 6897,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6861,
                              "src": "11349:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 6892,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "11293:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 6894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7455,
                            "src": "11293:19:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_uint88_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (uint16,uint88,bool) external returns (uint256)"
                            }
                          },
                          "id": 6898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11293:69:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6899,
                        "nodeType": "ExpressionStatement",
                        "src": "11293:69:38"
                      },
                      {
                        "expression": {
                          "id": 6907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6900,
                            "name": "tokensTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6864,
                            "src": "11373:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6902,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6868,
                                "src": "11415:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "id": 6903,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6857,
                                "src": "11422:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 6904,
                                "name": "isETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6870,
                                "src": "11432:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "id": 6905,
                                "name": "balanceBefore",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6876,
                                "src": "11439:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6901,
                              "name": "_sendTokensToReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7055,
                              "src": "11393:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20,address,bool,uint256) returns (uint256)"
                              }
                            },
                            "id": 6906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11393:60:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11373:80:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6908,
                        "nodeType": "ExpressionStatement",
                        "src": "11373:80:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6853,
                    "nodeType": "StructuredDocumentation",
                    "src": "10862:57:38",
                    "text": "@notice After maturity, withdraw cash back to account"
                  },
                  "id": 6910,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdrawCashToAccount",
                  "nameLocation": "10933:22:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6855,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "10972:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "10965:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6854,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "10965:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6857,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "11000:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "10992:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6856,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10992:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6859,
                        "mutability": "mutable",
                        "name": "assetInternalCashClaim",
                        "nameLocation": "11025:22:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "11018:29:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 6858,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "11018:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6861,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nameLocation": "11062:12:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "11057:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6860,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11057:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10955:125:38"
                  },
                  "returnParameters": {
                    "id": 6865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6864,
                        "mutability": "mutable",
                        "name": "tokensTransferred",
                        "nameLocation": "11106:17:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6910,
                        "src": "11098:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11098:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11097:27:38"
                  },
                  "scope": 7082,
                  "src": "10924:536:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 6987,
                    "nodeType": "Block",
                    "src": "11708:671:38",
                    "statements": [
                      {
                        "assignments": [
                          6926,
                          6928
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6926,
                            "mutability": "mutable",
                            "name": "token",
                            "nameLocation": "11726:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6987,
                            "src": "11719:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2763",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "id": 6925,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6924,
                                "name": "IERC20",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2763,
                                "src": "11719:6:38"
                              },
                              "referencedDeclaration": 2763,
                              "src": "11719:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2763",
                                "typeString": "contract IERC20"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6928,
                            "mutability": "mutable",
                            "name": "isETH",
                            "nameLocation": "11738:5:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6987,
                            "src": "11733:10:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6927,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11733:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6932,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6930,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6917,
                              "src": "11756:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6929,
                            "name": "getToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5559,
                            "src": "11747:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bool_$returns$_t_contract$_IERC20_$2763_$_t_bool_$",
                              "typeString": "function (bool) view returns (contract IERC20,bool)"
                            }
                          },
                          "id": 6931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11747:22:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_contract$_IERC20_$2763_$_t_bool_$",
                            "typeString": "tuple(contract IERC20,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11718:51:38"
                      },
                      {
                        "assignments": [
                          6934
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6934,
                            "mutability": "mutable",
                            "name": "balanceBefore",
                            "nameLocation": "11787:13:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6987,
                            "src": "11779:21:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6933,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11779:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6949,
                        "initialValue": {
                          "condition": {
                            "id": 6935,
                            "name": "isETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6928,
                            "src": "11803:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6945,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11859:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  ],
                                  "id": 6944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11851:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6943,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11851:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11851:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 6941,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6926,
                                "src": "11835:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 6942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2702,
                              "src": "11835:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 6947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11835:30:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "11803:62:38",
                          "trueExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 6938,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "11819:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 6937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11811:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6936,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11811:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11811:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6940,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "11811:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11779:86:38"
                      },
                      {
                        "assignments": [
                          6954
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6954,
                            "mutability": "mutable",
                            "name": "action",
                            "nameLocation": "11964:6:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6987,
                            "src": "11931:39:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct BalanceActionWithTrades[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6952,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 6951,
                                  "name": "BalanceActionWithTrades",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 4878,
                                  "src": "11931:23:38"
                                },
                                "referencedDeclaration": 4878,
                                "src": "11931:23:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                                  "typeString": "struct BalanceActionWithTrades"
                                }
                              },
                              "id": 6953,
                              "nodeType": "ArrayTypeName",
                              "src": "11931:25:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                                "typeString": "struct BalanceActionWithTrades[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6967,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6957,
                                "name": "getCurrencyId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5382,
                                "src": "12017:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint16_$",
                                  "typeString": "function () view returns (uint16)"
                                }
                              },
                              "id": 6958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12017:15:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6959,
                                "name": "getMarketIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5442,
                                "src": "12046:14:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$",
                                  "typeString": "function () view returns (uint8)"
                                }
                              },
                              "id": 6960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12046:16:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 6962,
                                  "name": "fCashToSell",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6915,
                                  "src": "12088:11:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6961,
                                "name": "_safeUint88",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7081,
                                "src": "12076:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint88_$",
                                  "typeString": "function (uint256) pure returns (uint88)"
                                }
                              },
                              "id": 6963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12076:24:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              }
                            },
                            {
                              "id": 6964,
                              "name": "maxImpliedRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6919,
                              "src": "12114:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            {
                              "id": 6965,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6917,
                              "src": "12142:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint88",
                                "typeString": "uint88"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 6955,
                              "name": "EncodeDecode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4826,
                              "src": "11973:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_EncodeDecode_$4826_$",
                                "typeString": "type(library EncodeDecode)"
                              }
                            },
                            "id": 6956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "encodeBorrowTrade",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4825,
                            "src": "11973:30:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint16_$_t_uint8_$_t_uint88_$_t_uint32_$_t_bool_$returns$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint16,uint8,uint88,uint32,bool) pure returns (struct BalanceActionWithTrades memory[] memory)"
                            }
                          },
                          "id": 6966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11973:191:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct BalanceActionWithTrades memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11931:233:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6973,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "12220:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 6972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12212:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6971,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12212:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12212:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6975,
                              "name": "action",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6954,
                              "src": "12227:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct BalanceActionWithTrades memory[] memory"
                              }
                            ],
                            "expression": {
                              "id": 6968,
                              "name": "NotionalV2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5135,
                              "src": "12174:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_INotionalV2_$7474",
                                "typeString": "contract INotionalV2"
                              }
                            },
                            "id": 6970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "batchBalanceAndTradeAction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7464,
                            "src": "12174:37:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_array$_t_struct$_BalanceActionWithTrades_$4878_memory_ptr_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,struct BalanceActionWithTrades memory[] memory) payable external"
                            }
                          },
                          "id": 6976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12174:60:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6977,
                        "nodeType": "ExpressionStatement",
                        "src": "12174:60:38"
                      },
                      {
                        "expression": {
                          "id": 6985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6978,
                            "name": "tokensTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6922,
                            "src": "12292:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6980,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6926,
                                "src": "12334:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "id": 6981,
                                "name": "receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6913,
                                "src": "12341:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 6982,
                                "name": "isETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6928,
                                "src": "12351:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "id": 6983,
                                "name": "balanceBefore",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6934,
                                "src": "12358:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6979,
                              "name": "_sendTokensToReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7055,
                              "src": "12312:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20,address,bool,uint256) returns (uint256)"
                              }
                            },
                            "id": 6984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12312:60:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12292:80:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6986,
                        "nodeType": "ExpressionStatement",
                        "src": "12292:80:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6911,
                    "nodeType": "StructuredDocumentation",
                    "src": "11466:54:38",
                    "text": "@dev Sells an fCash share back on the Notional AMM"
                  },
                  "id": 6988,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sellfCash",
                  "nameLocation": "11534:10:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6913,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "11562:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6988,
                        "src": "11554:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11554:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6915,
                        "mutability": "mutable",
                        "name": "fCashToSell",
                        "nameLocation": "11588:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6988,
                        "src": "11580:19:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11580:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6917,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nameLocation": "11614:12:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6988,
                        "src": "11609:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6916,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11609:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6919,
                        "mutability": "mutable",
                        "name": "maxImpliedRate",
                        "nameLocation": "11643:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6988,
                        "src": "11636:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 6918,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11636:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11544:119:38"
                  },
                  "returnParameters": {
                    "id": 6923,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6922,
                        "mutability": "mutable",
                        "name": "tokensTransferred",
                        "nameLocation": "11689:17:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6988,
                        "src": "11681:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6921,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11681:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11680:27:38"
                  },
                  "scope": 7082,
                  "src": "11525:854:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 7054,
                    "nodeType": "Block",
                    "src": "12565:401:38",
                    "statements": [
                      {
                        "assignments": [
                          7003
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7003,
                            "mutability": "mutable",
                            "name": "balanceAfter",
                            "nameLocation": "12583:12:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7054,
                            "src": "12575:20:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7002,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12575:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7018,
                        "initialValue": {
                          "condition": {
                            "id": 7004,
                            "name": "isETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6995,
                            "src": "12598:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 7014,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12654:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                      "typeString": "contract wfCashLogic"
                                    }
                                  ],
                                  "id": 7013,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12646:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7012,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12646:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12646:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 7010,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6991,
                                "src": "12630:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$2763",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 7011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2702,
                              "src": "12630:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 7016,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12630:30:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "12598:62:38",
                          "trueExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7007,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "12614:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_wfCashLogic_$7082",
                                    "typeString": "contract wfCashLogic"
                                  }
                                ],
                                "id": 7006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12606:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7005,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12606:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12606:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 7009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "12606:21:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12575:85:38"
                      },
                      {
                        "expression": {
                          "id": 7023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7019,
                            "name": "tokensTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7000,
                            "src": "12670:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7020,
                              "name": "balanceAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7003,
                              "src": "12690:12:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 7021,
                              "name": "balanceBefore",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6997,
                              "src": "12705:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12690:28:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12670:48:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7024,
                        "nodeType": "ExpressionStatement",
                        "src": "12670:48:38"
                      },
                      {
                        "condition": {
                          "id": 7025,
                          "name": "isETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6995,
                          "src": "12733:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7052,
                          "nodeType": "Block",
                          "src": "12888:72:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7048,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6993,
                                    "src": "12921:8:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7049,
                                    "name": "tokensTransferred",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7000,
                                    "src": "12931:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7045,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6991,
                                    "src": "12902:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 7047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2819,
                                  "src": "12902:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2763_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 7050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12902:47:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7051,
                              "nodeType": "ExpressionStatement",
                              "src": "12902:47:38"
                            }
                          ]
                        },
                        "id": 7053,
                        "nodeType": "IfStatement",
                        "src": "12729:231:38",
                        "trueBody": {
                          "id": 7044,
                          "nodeType": "Block",
                          "src": "12740:142:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 7026,
                                      "name": "WETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5138,
                                      "src": "12754:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWETH9_$7263",
                                        "typeString": "contract IWETH9"
                                      }
                                    },
                                    "id": 7028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "deposit",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7248,
                                    "src": "12754:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                      "typeString": "function () payable external"
                                    }
                                  },
                                  "id": 7030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "value"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 7029,
                                      "name": "tokensTransferred",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7000,
                                      "src": "12774:17:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "12754:38:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                    "typeString": "function () payable external"
                                  }
                                },
                                "id": 7031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12754:40:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7032,
                              "nodeType": "ExpressionStatement",
                              "src": "12754:40:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7040,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6993,
                                    "src": "12843:8:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7041,
                                    "name": "tokensTransferred",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7000,
                                    "src": "12853:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 7036,
                                            "name": "WETH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5138,
                                            "src": "12823:4:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IWETH9_$7263",
                                              "typeString": "contract IWETH9"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IWETH9_$7263",
                                              "typeString": "contract IWETH9"
                                            }
                                          ],
                                          "id": 7035,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "12815:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 7034,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12815:7:38",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 7037,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12815:13:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7033,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2763,
                                      "src": "12808:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2763_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 7038,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12808:21:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2763",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 7039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2819,
                                  "src": "12808:34:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2763_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2763_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 7042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12808:63:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7043,
                              "nodeType": "ExpressionStatement",
                              "src": "12808:63:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 7055,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendTokensToReceiver",
                  "nameLocation": "12394:21:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6991,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "12432:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7055,
                        "src": "12425:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 6990,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6989,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "12425:6:38"
                          },
                          "referencedDeclaration": 2763,
                          "src": "12425:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6993,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "12455:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7055,
                        "src": "12447:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6992,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12447:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6995,
                        "mutability": "mutable",
                        "name": "isETH",
                        "nameLocation": "12478:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7055,
                        "src": "12473:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6994,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12473:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6997,
                        "mutability": "mutable",
                        "name": "balanceBefore",
                        "nameLocation": "12501:13:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7055,
                        "src": "12493:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12493:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12415:105:38"
                  },
                  "returnParameters": {
                    "id": 7001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7000,
                        "mutability": "mutable",
                        "name": "tokensTransferred",
                        "nameLocation": "12546:17:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7055,
                        "src": "12538:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12538:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12537:27:38"
                  },
                  "scope": 7082,
                  "src": "12385:581:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 7080,
                    "nodeType": "Block",
                    "src": "13035:82:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7063,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7057,
                                "src": "13053:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 7068,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "13071:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint88_$",
                                            "typeString": "type(uint88)"
                                          },
                                          "typeName": {
                                            "id": 7067,
                                            "name": "uint88",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13071:6:38",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint88_$",
                                            "typeString": "type(uint88)"
                                          }
                                        ],
                                        "id": 7066,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "13066:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 7069,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13066:12:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint88",
                                        "typeString": "type(uint88)"
                                      }
                                    },
                                    "id": 7070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "13066:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint88",
                                      "typeString": "uint88"
                                    }
                                  ],
                                  "id": 7065,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13058:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 7064,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13058:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13058:25:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13053:30:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13045:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 7073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13045:39:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7074,
                        "nodeType": "ExpressionStatement",
                        "src": "13045:39:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7077,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7057,
                              "src": "13108:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13101:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint88_$",
                              "typeString": "type(uint88)"
                            },
                            "typeName": {
                              "id": 7075,
                              "name": "uint88",
                              "nodeType": "ElementaryTypeName",
                              "src": "13101:6:38",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13101:9:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "functionReturnParameters": 7061,
                        "id": 7079,
                        "nodeType": "Return",
                        "src": "13094:16:38"
                      }
                    ]
                  },
                  "id": 7081,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeUint88",
                  "nameLocation": "12981:11:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7057,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "13001:1:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7081,
                        "src": "12993:9:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12993:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12992:11:38"
                  },
                  "returnParameters": {
                    "id": 7061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7060,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7081,
                        "src": "13027:6:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 7059,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "13027:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13026:8:38"
                  },
                  "scope": 7082,
                  "src": "12972:145:38",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7083,
              "src": "450:12669:38",
              "usedErrors": []
            }
          ],
          "src": "32:13088:38"
        },
        "id": 38
      },
      "wrapped-fcash/interfaces/IERC4626.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/interfaces/IERC4626.sol",
          "exportedSymbols": {
            "IERC4626": [
              7243
            ]
          },
          "id": 7244,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7084,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:39"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC4626",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 7243,
              "linearizedBaseContracts": [
                7243
              ],
              "name": "IERC4626",
              "nameLocation": "35:8:39",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 7094,
                  "name": "Deposit",
                  "nameLocation": "56:7:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7086,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "caller",
                        "nameLocation": "80:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7094,
                        "src": "64:22:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "64:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7088,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "104:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7094,
                        "src": "88:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7087,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "88:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7090,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "119:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7094,
                        "src": "111:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7089,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "111:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7092,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "135:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7094,
                        "src": "127:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7091,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "127:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "63:79:39"
                  },
                  "src": "50:93:39"
                },
                {
                  "anonymous": false,
                  "id": 7106,
                  "name": "Withdraw",
                  "nameLocation": "155:8:39",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7096,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "caller",
                        "nameLocation": "189:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7106,
                        "src": "173:22:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7095,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "173:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7098,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "221:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7106,
                        "src": "205:24:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7097,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "205:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7100,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "255:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7106,
                        "src": "239:21:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7099,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "239:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7102,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "278:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7106,
                        "src": "270:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7101,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "270:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7104,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "302:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7106,
                        "src": "294:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7103,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:151:39"
                  },
                  "src": "149:166:39"
                },
                {
                  "documentation": {
                    "id": 7107,
                    "nodeType": "StructuredDocumentation",
                    "src": "321:207:39",
                    "text": " @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n - MUST be an ERC-20 token contract.\n - MUST NOT revert."
                  },
                  "functionSelector": "38d52e0f",
                  "id": 7112,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "asset",
                  "nameLocation": "542:5:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7108,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "547:2:39"
                  },
                  "returnParameters": {
                    "id": 7111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7110,
                        "mutability": "mutable",
                        "name": "assetTokenAddress",
                        "nameLocation": "581:17:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7112,
                        "src": "573:25:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "573:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "572:27:39"
                  },
                  "scope": 7243,
                  "src": "533:67:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7113,
                    "nodeType": "StructuredDocumentation",
                    "src": "606:286:39",
                    "text": " @dev Returns the total amount of the underlying asset that is “managed” by Vault.\n - SHOULD include any compounding that occurs from yield.\n - MUST be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT revert."
                  },
                  "functionSelector": "01e1d114",
                  "id": 7118,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalAssets",
                  "nameLocation": "906:11:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7114,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "917:2:39"
                  },
                  "returnParameters": {
                    "id": 7117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7116,
                        "mutability": "mutable",
                        "name": "totalManagedAssets",
                        "nameLocation": "951:18:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7118,
                        "src": "943:26:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "943:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "942:28:39"
                  },
                  "scope": 7243,
                  "src": "897:74:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7119,
                    "nodeType": "StructuredDocumentation",
                    "src": "977:720:39",
                    "text": " @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n from."
                  },
                  "functionSelector": "c6e6f592",
                  "id": 7126,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertToShares",
                  "nameLocation": "1711:15:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7121,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "1735:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7126,
                        "src": "1727:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7120,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1726:16:39"
                  },
                  "returnParameters": {
                    "id": 7125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7124,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "1774:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7126,
                        "src": "1766:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1766:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1765:16:39"
                  },
                  "scope": 7243,
                  "src": "1702:80:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7127,
                    "nodeType": "StructuredDocumentation",
                    "src": "1788:720:39",
                    "text": " @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n from."
                  },
                  "functionSelector": "07a2d13a",
                  "id": 7134,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertToAssets",
                  "nameLocation": "2522:15:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7129,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "2546:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7134,
                        "src": "2538:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2538:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2537:16:39"
                  },
                  "returnParameters": {
                    "id": 7133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7132,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "2585:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7134,
                        "src": "2577:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7131,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2577:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2576:16:39"
                  },
                  "scope": 7243,
                  "src": "2513:80:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7135,
                    "nodeType": "StructuredDocumentation",
                    "src": "2599:386:39",
                    "text": " @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n through a deposit call.\n - MUST return a limited value if receiver is subject to some deposit limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n - MUST NOT revert."
                  },
                  "functionSelector": "402d267d",
                  "id": 7142,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxDeposit",
                  "nameLocation": "2999:10:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7137,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "3018:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7142,
                        "src": "3010:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7136,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3010:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3009:18:39"
                  },
                  "returnParameters": {
                    "id": 7141,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7140,
                        "mutability": "mutable",
                        "name": "maxAssets",
                        "nameLocation": "3059:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7142,
                        "src": "3051:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3051:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3050:19:39"
                  },
                  "scope": 7243,
                  "src": "2990:80:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7143,
                    "nodeType": "StructuredDocumentation",
                    "src": "3076:1012:39",
                    "text": " @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n current on-chain conditions.\n - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n   call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n   in the same transaction.\n - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n   deposit would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."
                  },
                  "functionSelector": "ef8b30f7",
                  "id": 7150,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewDeposit",
                  "nameLocation": "4102:14:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7145,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "4125:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7150,
                        "src": "4117:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7144,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4117:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4116:16:39"
                  },
                  "returnParameters": {
                    "id": 7149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7148,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "4164:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7150,
                        "src": "4156:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4156:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4155:16:39"
                  },
                  "scope": 7243,
                  "src": "4093:79:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7151,
                    "nodeType": "StructuredDocumentation",
                    "src": "4178:651:39",
                    "text": " @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n   deposit execution, and are accounted for during deposit.\n - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n   approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."
                  },
                  "functionSelector": "6e553f65",
                  "id": 7160,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nameLocation": "4843:7:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7156,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7153,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "4859:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7160,
                        "src": "4851:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7152,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4851:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7155,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "4875:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7160,
                        "src": "4867:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7154,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4867:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4850:34:39"
                  },
                  "returnParameters": {
                    "id": 7159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7158,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "4911:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7160,
                        "src": "4903:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7157,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4903:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4902:16:39"
                  },
                  "scope": 7243,
                  "src": "4834:85:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7161,
                    "nodeType": "StructuredDocumentation",
                    "src": "4925:341:39",
                    "text": " @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n - MUST return a limited value if receiver is subject to some mint limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n - MUST NOT revert."
                  },
                  "functionSelector": "c63d75b6",
                  "id": 7168,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxMint",
                  "nameLocation": "5280:7:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7163,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "5296:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7168,
                        "src": "5288:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7162,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5288:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5287:18:39"
                  },
                  "returnParameters": {
                    "id": 7167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7166,
                        "mutability": "mutable",
                        "name": "maxShares",
                        "nameLocation": "5337:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7168,
                        "src": "5329:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7165,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5329:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5328:19:39"
                  },
                  "scope": 7243,
                  "src": "5271:77:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7169,
                    "nodeType": "StructuredDocumentation",
                    "src": "5354:984:39",
                    "text": " @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n   in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n   same transaction.\n - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n   would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by minting."
                  },
                  "functionSelector": "b3d7f6b9",
                  "id": 7176,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewMint",
                  "nameLocation": "6352:11:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7171,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "6372:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7176,
                        "src": "6364:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6364:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6363:16:39"
                  },
                  "returnParameters": {
                    "id": 7175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7174,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "6411:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7176,
                        "src": "6403:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6403:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6402:16:39"
                  },
                  "scope": 7243,
                  "src": "6343:76:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7177,
                    "nodeType": "StructuredDocumentation",
                    "src": "6425:642:39",
                    "text": " @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n   execution, and are accounted for during mint.\n - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n   approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."
                  },
                  "functionSelector": "94bf804d",
                  "id": 7186,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nameLocation": "7081:4:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7179,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "7094:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7186,
                        "src": "7086:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7086:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7181,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "7110:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7186,
                        "src": "7102:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7102:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7085:34:39"
                  },
                  "returnParameters": {
                    "id": 7185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7184,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "7146:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7186,
                        "src": "7138:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7183,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7138:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7137:16:39"
                  },
                  "scope": 7243,
                  "src": "7072:82:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7187,
                    "nodeType": "StructuredDocumentation",
                    "src": "7160:293:39",
                    "text": " @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n Vault, through a withdraw call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST NOT revert."
                  },
                  "functionSelector": "ce96cb77",
                  "id": 7194,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxWithdraw",
                  "nameLocation": "7467:11:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7189,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "7487:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "7479:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7479:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7478:15:39"
                  },
                  "returnParameters": {
                    "id": 7193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7192,
                        "mutability": "mutable",
                        "name": "maxAssets",
                        "nameLocation": "7525:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "7517:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7191,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7517:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7516:19:39"
                  },
                  "scope": 7243,
                  "src": "7458:78:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7195,
                    "nodeType": "StructuredDocumentation",
                    "src": "7542:1034:39",
                    "text": " @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n given current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n   call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n   called\n   in the same transaction.\n - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n   the withdrawal would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."
                  },
                  "functionSelector": "0a28a477",
                  "id": 7202,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewWithdraw",
                  "nameLocation": "8590:15:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7197,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "8614:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7202,
                        "src": "8606:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7196,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8606:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8605:16:39"
                  },
                  "returnParameters": {
                    "id": 7201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7200,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "8653:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7202,
                        "src": "8645:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8645:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8644:16:39"
                  },
                  "scope": 7243,
                  "src": "8581:80:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7203,
                    "nodeType": "StructuredDocumentation",
                    "src": "8667:670:39",
                    "text": " @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n   withdraw execution, and are accounted for during withdraw.\n - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n   not having enough shares, etc).\n Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."
                  },
                  "functionSelector": "b460af94",
                  "id": 7214,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "9351:8:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7205,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "9377:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7214,
                        "src": "9369:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9369:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7207,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "9401:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7214,
                        "src": "9393:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7206,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9393:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7209,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9427:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7214,
                        "src": "9419:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9419:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9359:79:39"
                  },
                  "returnParameters": {
                    "id": 7213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7212,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "9465:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7214,
                        "src": "9457:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7211,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9457:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9456:16:39"
                  },
                  "scope": 7243,
                  "src": "9342:131:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7215,
                    "nodeType": "StructuredDocumentation",
                    "src": "9479:381:39",
                    "text": " @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n through a redeem call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n - MUST NOT revert."
                  },
                  "functionSelector": "d905777e",
                  "id": 7222,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "maxRedeem",
                  "nameLocation": "9874:9:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7218,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7217,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9892:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7222,
                        "src": "9884:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7216,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9884:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9883:15:39"
                  },
                  "returnParameters": {
                    "id": 7221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7220,
                        "mutability": "mutable",
                        "name": "maxShares",
                        "nameLocation": "9930:9:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7222,
                        "src": "9922:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7219,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9922:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9921:19:39"
                  },
                  "scope": 7243,
                  "src": "9865:76:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7223,
                    "nodeType": "StructuredDocumentation",
                    "src": "9947:1010:39",
                    "text": " @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,\n given current on-chain conditions.\n - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n   in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n   same transaction.\n - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n   redemption would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by redeeming."
                  },
                  "functionSelector": "4cdad506",
                  "id": 7230,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "previewRedeem",
                  "nameLocation": "10971:13:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7225,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "10993:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7230,
                        "src": "10985:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7224,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10985:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10984:16:39"
                  },
                  "returnParameters": {
                    "id": 7229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7228,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "11032:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7230,
                        "src": "11024:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11024:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11023:16:39"
                  },
                  "scope": 7243,
                  "src": "10962:78:39",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7231,
                    "nodeType": "StructuredDocumentation",
                    "src": "11046:661:39",
                    "text": " @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n   redeem execution, and are accounted for during redeem.\n - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n   not having enough shares, etc).\n NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."
                  },
                  "functionSelector": "ba087652",
                  "id": 7242,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeem",
                  "nameLocation": "11721:6:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7233,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "11745:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7242,
                        "src": "11737:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11737:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7235,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "11769:8:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7242,
                        "src": "11761:16:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11761:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7237,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "11795:5:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7242,
                        "src": "11787:13:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7236,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11787:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11727:79:39"
                  },
                  "returnParameters": {
                    "id": 7241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7240,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "11833:6:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7242,
                        "src": "11825:14:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11825:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11824:16:39"
                  },
                  "scope": 7243,
                  "src": "11712:129:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7244,
              "src": "25:11818:39",
              "usedErrors": []
            }
          ],
          "src": "0:11843:39"
        },
        "id": 39
      },
      "wrapped-fcash/interfaces/IWETH9.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/interfaces/IWETH9.sol",
          "exportedSymbols": {
            "IWETH9": [
              7263
            ]
          },
          "id": 7264,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7245,
              "literals": [
                "solidity",
                "=",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:40"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IWETH9",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 7263,
              "linearizedBaseContracts": [
                7263
              ],
              "name": "IWETH9",
              "nameLocation": "68:6:40",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "d0e30db0",
                  "id": 7248,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nameLocation": "90:7:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7246,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "97:2:40"
                  },
                  "returnParameters": {
                    "id": 7247,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "116:0:40"
                  },
                  "scope": 7263,
                  "src": "81:36:40",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "2e1a7d4d",
                  "id": 7253,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "132:8:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7250,
                        "mutability": "mutable",
                        "name": "wad",
                        "nameLocation": "149:3:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7253,
                        "src": "141:11:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7249,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "141:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "140:13:40"
                  },
                  "returnParameters": {
                    "id": 7252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "162:0:40"
                  },
                  "scope": 7263,
                  "src": "123:40:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "a9059cbb",
                  "id": 7262,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "178:8:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7255,
                        "mutability": "mutable",
                        "name": "dst",
                        "nameLocation": "195:3:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7262,
                        "src": "187:11:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "187:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7257,
                        "mutability": "mutable",
                        "name": "wad",
                        "nameLocation": "205:3:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7262,
                        "src": "200:8:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7256,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "200:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "186:23:40"
                  },
                  "returnParameters": {
                    "id": 7261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7260,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7262,
                        "src": "228:4:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7259,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "228:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "227:6:40"
                  },
                  "scope": 7263,
                  "src": "169:65:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7264,
              "src": "58:178:40",
              "usedErrors": []
            }
          ],
          "src": "32:205:40"
        },
        "id": 40
      },
      "wrapped-fcash/interfaces/notional/INotionalV2.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/interfaces/notional/INotionalV2.sol",
          "exportedSymbols": {
            "AccountBalance": [
              4951
            ],
            "AccountContext": [
              4940
            ],
            "AssetRateParameters": [
              4958
            ],
            "AssetStorageState": [
              4853
            ],
            "BalanceActionWithTrades": [
              4878
            ],
            "BatchLend": [
              4861
            ],
            "CashGroupSettings": [
              4929
            ],
            "DepositActionType": [
              4849
            ],
            "INotionalV2": [
              7474
            ],
            "PortfolioAsset": [
              4904
            ],
            "Token": [
              4890
            ],
            "TokenType": [
              4834
            ],
            "TradeActionType": [
              4841
            ]
          },
          "id": 7475,
          "license": "GPL-3.0-only",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7265,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".11"
              ],
              "nodeType": "PragmaDirective",
              "src": "41:24:41"
            },
            {
              "id": 7266,
              "literals": [
                "abicoder",
                "v2"
              ],
              "nodeType": "PragmaDirective",
              "src": "66:19:41"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/Types.sol",
              "file": "../../contracts/lib/Types.sol",
              "id": 7267,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7475,
              "sourceUnit": 4959,
              "src": "87:39:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "INotionalV2",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 7474,
              "linearizedBaseContracts": [
                7474
              ],
              "name": "INotionalV2",
              "nameLocation": "138:11:41",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "4ebad18e",
                  "id": 7278,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrency",
                  "nameLocation": "170:11:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7269,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "189:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7278,
                        "src": "182:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7268,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "182:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "181:19:41"
                  },
                  "returnParameters": {
                    "id": 7277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7273,
                        "mutability": "mutable",
                        "name": "assetToken",
                        "nameLocation": "261:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7278,
                        "src": "248:23:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                          "typeString": "struct Token"
                        },
                        "typeName": {
                          "id": 7272,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7271,
                            "name": "Token",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4890,
                            "src": "248:5:41"
                          },
                          "referencedDeclaration": 4890,
                          "src": "248:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$4890_storage_ptr",
                            "typeString": "struct Token"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7276,
                        "mutability": "mutable",
                        "name": "underlyingToken",
                        "nameLocation": "286:15:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7278,
                        "src": "273:28:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Token_$4890_memory_ptr",
                          "typeString": "struct Token"
                        },
                        "typeName": {
                          "id": 7275,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7274,
                            "name": "Token",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4890,
                            "src": "273:5:41"
                          },
                          "referencedDeclaration": 4890,
                          "src": "273:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Token_$4890_storage_ptr",
                            "typeString": "struct Token"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "247:55:41"
                  },
                  "scope": 7474,
                  "src": "161:142:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d4ccb0ed",
                  "id": 7286,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCashGroup",
                  "nameLocation": "318:12:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7280,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "338:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7286,
                        "src": "331:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7279,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "331:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "330:19:41"
                  },
                  "returnParameters": {
                    "id": 7285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7284,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7286,
                        "src": "373:24:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CashGroupSettings_$4929_memory_ptr",
                          "typeString": "struct CashGroupSettings"
                        },
                        "typeName": {
                          "id": 7283,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7282,
                            "name": "CashGroupSettings",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4929,
                            "src": "373:17:41"
                          },
                          "referencedDeclaration": 4929,
                          "src": "373:17:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CashGroupSettings_$4929_storage_ptr",
                            "typeString": "struct CashGroupSettings"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "372:26:41"
                  },
                  "scope": 7474,
                  "src": "309:90:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "b0de2217",
                  "id": 7294,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAccountContext",
                  "nameLocation": "414:17:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7288,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "440:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7294,
                        "src": "432:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "432:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "431:17:41"
                  },
                  "returnParameters": {
                    "id": 7293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7292,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7294,
                        "src": "472:21:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AccountContext_$4940_memory_ptr",
                          "typeString": "struct AccountContext"
                        },
                        "typeName": {
                          "id": 7291,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7290,
                            "name": "AccountContext",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4940,
                            "src": "472:14:41"
                          },
                          "referencedDeclaration": 4940,
                          "src": "472:14:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AccountContext_$4940_storage_ptr",
                            "typeString": "struct AccountContext"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "471:23:41"
                  },
                  "scope": 7474,
                  "src": "405:90:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "b536ffb6",
                  "id": 7303,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAccountPortfolio",
                  "nameLocation": "510:19:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7296,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "538:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7303,
                        "src": "530:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "530:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "529:17:41"
                  },
                  "returnParameters": {
                    "id": 7302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7301,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7303,
                        "src": "570:23:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct PortfolioAsset[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7299,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7298,
                              "name": "PortfolioAsset",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4904,
                              "src": "570:14:41"
                            },
                            "referencedDeclaration": 4904,
                            "src": "570:14:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PortfolioAsset_$4904_storage_ptr",
                              "typeString": "struct PortfolioAsset"
                            }
                          },
                          "id": 7300,
                          "nodeType": "ArrayTypeName",
                          "src": "570:16:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PortfolioAsset_$4904_storage_$dyn_storage_ptr",
                            "typeString": "struct PortfolioAsset[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "569:25:41"
                  },
                  "scope": 7474,
                  "src": "501:94:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "fc1b1345",
                  "id": 7316,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAccountBalance",
                  "nameLocation": "610:17:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7305,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "635:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "628:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7304,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "628:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7307,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "655:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "647:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "627:36:41"
                  },
                  "returnParameters": {
                    "id": 7315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7310,
                        "mutability": "mutable",
                        "name": "cashBalance",
                        "nameLocation": "731:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "724:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7309,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "724:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7312,
                        "mutability": "mutable",
                        "name": "nTokenBalance",
                        "nameLocation": "763:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "756:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7311,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "756:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7314,
                        "mutability": "mutable",
                        "name": "lastClaimTime",
                        "nameLocation": "798:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "790:21:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "790:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "710:111:41"
                  },
                  "scope": 7474,
                  "src": "601:221:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f83a8608",
                  "id": 7337,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getfCashLendFromDeposit",
                  "nameLocation": "836:23:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7318,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "876:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "869:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7317,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "869:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7320,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "904:21:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "896:29:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7319,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "896:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7322,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "943:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "935:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "935:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7324,
                        "mutability": "mutable",
                        "name": "minLendRate",
                        "nameLocation": "968:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "961:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7323,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "961:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7326,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "997:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "989:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7325,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "989:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7328,
                        "mutability": "mutable",
                        "name": "useUnderlying",
                        "nameLocation": "1021:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "1016:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7327,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1016:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "859:181:41"
                  },
                  "returnParameters": {
                    "id": 7336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7331,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "1080:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "1073:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 7330,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "1073:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7333,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "1107:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "1101:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7332,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1101:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7335,
                        "mutability": "mutable",
                        "name": "encodedTrade",
                        "nameLocation": "1136:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7337,
                        "src": "1128:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7334,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1128:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1063:91:41"
                  },
                  "scope": 7474,
                  "src": "827:328:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "aaae47b5",
                  "id": 7358,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDepositFromfCashLend",
                  "nameLocation": "1170:23:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7339,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1210:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1203:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7338,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1203:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7341,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "1238:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1230:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1230:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7343,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1267:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1259:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7345,
                        "mutability": "mutable",
                        "name": "minLendRate",
                        "nameLocation": "1292:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1285:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7344,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1285:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7347,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "1321:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1313:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7346,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1313:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1193:143:41"
                  },
                  "returnParameters": {
                    "id": 7357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7350,
                        "mutability": "mutable",
                        "name": "depositAmountUnderlying",
                        "nameLocation": "1377:23:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1369:31:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1369:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7352,
                        "mutability": "mutable",
                        "name": "depositAmountAsset",
                        "nameLocation": "1418:18:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1410:26:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1410:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7354,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "1452:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1446:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7353,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1446:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7356,
                        "mutability": "mutable",
                        "name": "encodedTrade",
                        "nameLocation": "1481:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7358,
                        "src": "1473:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7355,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1473:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1359:140:41"
                  },
                  "scope": 7474,
                  "src": "1161:339:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "416a1587",
                  "id": 7379,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPrincipalFromfCashBorrow",
                  "nameLocation": "1515:27:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7360,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1559:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1552:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7359,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1552:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7362,
                        "mutability": "mutable",
                        "name": "fCashBorrow",
                        "nameLocation": "1587:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1579:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7361,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1579:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7364,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1616:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1608:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7363,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1608:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7366,
                        "mutability": "mutable",
                        "name": "maxBorrowRate",
                        "nameLocation": "1641:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1634:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7365,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1634:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7368,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "1672:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1664:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7367,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1664:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1542:145:41"
                  },
                  "returnParameters": {
                    "id": 7378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7371,
                        "mutability": "mutable",
                        "name": "borrowAmountUnderlying",
                        "nameLocation": "1728:22:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1720:30:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7370,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1720:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7373,
                        "mutability": "mutable",
                        "name": "borrowAmountAsset",
                        "nameLocation": "1768:17:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1760:25:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7372,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1760:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7375,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "1801:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1795:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7374,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1795:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7377,
                        "mutability": "mutable",
                        "name": "encodedTrade",
                        "nameLocation": "1830:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7379,
                        "src": "1822:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7376,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1822:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1710:138:41"
                  },
                  "scope": 7474,
                  "src": "1506:343:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "bac9e8b1",
                  "id": 7400,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getfCashBorrowFromPrincipal",
                  "nameLocation": "1868:27:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7381,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1912:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "1905:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7380,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1905:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7383,
                        "mutability": "mutable",
                        "name": "borrowedAmountExternal",
                        "nameLocation": "1940:22:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "1932:30:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1932:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7385,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1980:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "1972:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7384,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1972:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7387,
                        "mutability": "mutable",
                        "name": "maxBorrowRate",
                        "nameLocation": "2005:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "1998:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7386,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1998:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7389,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "2036:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "2028:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2028:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7391,
                        "mutability": "mutable",
                        "name": "useUnderlying",
                        "nameLocation": "2060:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "2055:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7390,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2055:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1895:184:41"
                  },
                  "returnParameters": {
                    "id": 7399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7394,
                        "mutability": "mutable",
                        "name": "fCashDebt",
                        "nameLocation": "2119:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "2112:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 7393,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "2112:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7396,
                        "mutability": "mutable",
                        "name": "marketIndex",
                        "nameLocation": "2144:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "2138:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7395,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2138:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7398,
                        "mutability": "mutable",
                        "name": "encodedTrade",
                        "nameLocation": "2173:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7400,
                        "src": "2165:20:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7397,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2165:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2102:89:41"
                  },
                  "scope": 7474,
                  "src": "1859:333:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "6ebbf174",
                  "id": 7411,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "convertCashBalanceToExternal",
                  "nameLocation": "2207:28:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7402,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "2252:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7411,
                        "src": "2245:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7401,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "2245:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7404,
                        "mutability": "mutable",
                        "name": "cashBalanceInternal",
                        "nameLocation": "2279:19:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7411,
                        "src": "2272:26:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7403,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2272:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7406,
                        "mutability": "mutable",
                        "name": "useUnderlying",
                        "nameLocation": "2313:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7411,
                        "src": "2308:18:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7405,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2308:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2235:97:41"
                  },
                  "returnParameters": {
                    "id": 7410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7409,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7411,
                        "src": "2356:6:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7408,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2356:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2355:8:41"
                  },
                  "scope": 7474,
                  "src": "2198:166:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "c52c43e1",
                  "id": 7426,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPresentfCashValue",
                  "nameLocation": "2379:20:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7413,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "2416:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7426,
                        "src": "2409:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7412,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "2409:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7415,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "2444:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7426,
                        "src": "2436:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7414,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2436:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7417,
                        "mutability": "mutable",
                        "name": "notional",
                        "nameLocation": "2469:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7426,
                        "src": "2462:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7416,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2462:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7419,
                        "mutability": "mutable",
                        "name": "blockTime",
                        "nameLocation": "2495:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7426,
                        "src": "2487:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2487:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7421,
                        "mutability": "mutable",
                        "name": "riskAdjusted",
                        "nameLocation": "2519:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7426,
                        "src": "2514:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7420,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2514:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2399:138:41"
                  },
                  "returnParameters": {
                    "id": 7425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7424,
                        "mutability": "mutable",
                        "name": "presentValue",
                        "nameLocation": "2568:12:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7426,
                        "src": "2561:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7423,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2561:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2560:21:41"
                  },
                  "scope": 7474,
                  "src": "2370:212:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f242432a",
                  "id": 7439,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "2601:16:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7428,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2635:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7439,
                        "src": "2627:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7427,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2627:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7430,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2657:2:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7439,
                        "src": "2649:10:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2649:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7432,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "2677:2:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7439,
                        "src": "2669:10:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2669:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7434,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2697:6:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7439,
                        "src": "2689:14:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7433,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2689:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7436,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2728:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7439,
                        "src": "2713:19:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7435,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2713:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2617:121:41"
                  },
                  "returnParameters": {
                    "id": 7438,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2755:0:41"
                  },
                  "scope": 7474,
                  "src": "2592:164:41",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f667f897",
                  "id": 7444,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "settleAccount",
                  "nameLocation": "2771:13:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7441,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2793:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7444,
                        "src": "2785:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2785:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2784:17:41"
                  },
                  "returnParameters": {
                    "id": 7443,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2810:0:41"
                  },
                  "scope": 7474,
                  "src": "2762:49:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "02f332e8",
                  "id": 7455,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "2826:8:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7446,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "2851:10:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7455,
                        "src": "2844:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7445,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "2844:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7448,
                        "mutability": "mutable",
                        "name": "amountInternalPrecision",
                        "nameLocation": "2878:23:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7455,
                        "src": "2871:30:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 7447,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "2871:6:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7450,
                        "mutability": "mutable",
                        "name": "redeemToUnderlying",
                        "nameLocation": "2916:18:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7455,
                        "src": "2911:23:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7449,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2911:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2834:106:41"
                  },
                  "returnParameters": {
                    "id": 7454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7453,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7455,
                        "src": "2959:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7452,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2959:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2958:9:41"
                  },
                  "scope": 7474,
                  "src": "2817:151:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0276b64b",
                  "id": 7464,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBalanceAndTradeAction",
                  "nameLocation": "2983:26:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7457,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3018:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7464,
                        "src": "3010:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7456,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3010:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7461,
                        "mutability": "mutable",
                        "name": "actions",
                        "nameLocation": "3062:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7464,
                        "src": "3027:42:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct BalanceActionWithTrades[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7459,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7458,
                              "name": "BalanceActionWithTrades",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4878,
                              "src": "3027:23:41"
                            },
                            "referencedDeclaration": 4878,
                            "src": "3027:23:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BalanceActionWithTrades_$4878_storage_ptr",
                              "typeString": "struct BalanceActionWithTrades"
                            }
                          },
                          "id": 7460,
                          "nodeType": "ArrayTypeName",
                          "src": "3027:25:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BalanceActionWithTrades_$4878_storage_$dyn_storage_ptr",
                            "typeString": "struct BalanceActionWithTrades[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3009:61:41"
                  },
                  "returnParameters": {
                    "id": 7463,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3103:0:41"
                  },
                  "scope": 7474,
                  "src": "2974:130:41",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "541f5270",
                  "id": 7473,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchLend",
                  "nameLocation": "3119:9:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7466,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3137:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7473,
                        "src": "3129:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3129:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7470,
                        "mutability": "mutable",
                        "name": "actions",
                        "nameLocation": "3167:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 7473,
                        "src": "3146:28:41",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct BatchLend[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7468,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7467,
                              "name": "BatchLend",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4861,
                              "src": "3146:9:41"
                            },
                            "referencedDeclaration": 4861,
                            "src": "3146:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BatchLend_$4861_storage_ptr",
                              "typeString": "struct BatchLend"
                            }
                          },
                          "id": 7469,
                          "nodeType": "ArrayTypeName",
                          "src": "3146:11:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_BatchLend_$4861_storage_$dyn_storage_ptr",
                            "typeString": "struct BatchLend[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3128:47:41"
                  },
                  "returnParameters": {
                    "id": 7472,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3184:0:41"
                  },
                  "scope": 7474,
                  "src": "3110:75:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7475,
              "src": "128:3060:41",
              "usedErrors": []
            }
          ],
          "src": "41:3148:41"
        },
        "id": 41
      },
      "wrapped-fcash/interfaces/notional/IWrappedfCash.sol": {
        "ast": {
          "absolutePath": "wrapped-fcash/interfaces/notional/IWrappedfCash.sol",
          "exportedSymbols": {
            "IERC20": [
              2763
            ],
            "IERC4626": [
              7243
            ],
            "IERC777": [
              3171
            ],
            "IWrappedfCash": [
              7606
            ],
            "IWrappedfCashComplete": [
              7613
            ],
            "TokenType": [
              4834
            ]
          },
          "id": 7614,
          "license": "GPL-3.0-only",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7476,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "41:23:42"
            },
            {
              "absolutePath": "wrapped-fcash/contracts/lib/Types.sol",
              "file": "../../contracts/lib/Types.sol",
              "id": 7478,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7614,
              "sourceUnit": 4959,
              "src": "66:56:42",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7477,
                    "name": "TokenType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "74:9:42",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "wrapped-fcash/interfaces/IERC4626.sol",
              "file": "../IERC4626.sol",
              "id": 7479,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7614,
              "sourceUnit": 7244,
              "src": "123:25:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
              "file": "openzeppelin-contracts-V4/token/ERC20/IERC20.sol",
              "id": 7480,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7614,
              "sourceUnit": 2764,
              "src": "149:58:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-V4/token/ERC777/IERC777.sol",
              "file": "openzeppelin-contracts-V4/token/ERC777/IERC777.sol",
              "id": 7481,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7614,
              "sourceUnit": 3172,
              "src": "208:60:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IWrappedfCash",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 7606,
              "linearizedBaseContracts": [
                7606
              ],
              "name": "IWrappedfCash",
              "nameLocation": "280:13:42",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IWrappedfCash.RedeemOpts",
                  "id": 7490,
                  "members": [
                    {
                      "constant": false,
                      "id": 7483,
                      "mutability": "mutable",
                      "name": "redeemToUnderlying",
                      "nameLocation": "333:18:42",
                      "nodeType": "VariableDeclaration",
                      "scope": 7490,
                      "src": "328:23:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7482,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "328:4:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7485,
                      "mutability": "mutable",
                      "name": "transferfCash",
                      "nameLocation": "366:13:42",
                      "nodeType": "VariableDeclaration",
                      "scope": 7490,
                      "src": "361:18:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7484,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "361:4:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7487,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nameLocation": "397:8:42",
                      "nodeType": "VariableDeclaration",
                      "scope": 7490,
                      "src": "389:16:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7486,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:7:42",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7489,
                      "mutability": "mutable",
                      "name": "maxImpliedRate",
                      "nameLocation": "468:14:42",
                      "nodeType": "VariableDeclaration",
                      "scope": 7490,
                      "src": "461:21:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7488,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "461:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RedeemOpts",
                  "nameLocation": "307:10:42",
                  "nodeType": "StructDefinition",
                  "scope": 7606,
                  "src": "300:189:42",
                  "visibility": "public"
                },
                {
                  "functionSelector": "152b838c",
                  "id": 7497,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nameLocation": "503:10:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7492,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "521:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7497,
                        "src": "514:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7491,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "514:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7494,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "540:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7497,
                        "src": "533:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 7493,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "533:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "513:36:42"
                  },
                  "returnParameters": {
                    "id": 7496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "558:0:42"
                  },
                  "scope": 7606,
                  "src": "494:65:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7498,
                    "nodeType": "StructuredDocumentation",
                    "src": "565:44:42",
                    "text": "@notice Mints wrapped fCash ERC20 tokens"
                  },
                  "functionSelector": "0db8481c",
                  "id": 7509,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintViaAsset",
                  "nameLocation": "623:12:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7500,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "653:21:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "645:29:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7502,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "691:11:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "684:18:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 7501,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "684:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7504,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "720:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "712:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7506,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "745:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "738:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7505,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "635:130:42"
                  },
                  "returnParameters": {
                    "id": 7508,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "774:0:42"
                  },
                  "scope": 7606,
                  "src": "614:161:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "29cf1405",
                  "id": 7520,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintViaUnderlying",
                  "nameLocation": "790:17:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7511,
                        "mutability": "mutable",
                        "name": "depositAmountExternal",
                        "nameLocation": "825:21:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7520,
                        "src": "817:29:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7510,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "817:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7513,
                        "mutability": "mutable",
                        "name": "fCashAmount",
                        "nameLocation": "863:11:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7520,
                        "src": "856:18:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 7512,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "856:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7515,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "892:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7520,
                        "src": "884:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "884:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7517,
                        "mutability": "mutable",
                        "name": "minImpliedRate",
                        "nameLocation": "917:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7520,
                        "src": "910:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7516,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "910:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "807:130:42"
                  },
                  "returnParameters": {
                    "id": 7519,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "946:0:42"
                  },
                  "scope": 7606,
                  "src": "781:166:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d84878b8",
                  "id": 7528,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeem",
                  "nameLocation": "962:6:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7526,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7522,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "977:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7528,
                        "src": "969:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7521,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "969:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7525,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1003:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7528,
                        "src": "985:22:42",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RedeemOpts_$7490_memory_ptr",
                          "typeString": "struct IWrappedfCash.RedeemOpts"
                        },
                        "typeName": {
                          "id": 7524,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7523,
                            "name": "RedeemOpts",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 7490,
                            "src": "985:10:42"
                          },
                          "referencedDeclaration": 7490,
                          "src": "985:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RedeemOpts_$7490_storage_ptr",
                            "typeString": "struct IWrappedfCash.RedeemOpts"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "968:40:42"
                  },
                  "returnParameters": {
                    "id": 7527,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1017:0:42"
                  },
                  "scope": 7606,
                  "src": "953:65:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "3d3192cb",
                  "id": 7537,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeemToAsset",
                  "nameLocation": "1032:13:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7530,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1054:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7537,
                        "src": "1046:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7529,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1046:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7532,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "1070:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7537,
                        "src": "1062:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1062:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7534,
                        "mutability": "mutable",
                        "name": "maxImpliedRate",
                        "nameLocation": "1087:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7537,
                        "src": "1080:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7533,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1080:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1045:57:42"
                  },
                  "returnParameters": {
                    "id": 7536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1111:0:42"
                  },
                  "scope": 7606,
                  "src": "1023:89:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "745d08d9",
                  "id": 7546,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeemToUnderlying",
                  "nameLocation": "1126:18:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7539,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1153:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7546,
                        "src": "1145:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1145:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7541,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "1169:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7546,
                        "src": "1161:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7540,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1161:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7543,
                        "mutability": "mutable",
                        "name": "maxImpliedRate",
                        "nameLocation": "1186:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7546,
                        "src": "1179:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7542,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1179:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1144:57:42"
                  },
                  "returnParameters": {
                    "id": 7545,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1210:0:42"
                  },
                  "scope": 7606,
                  "src": "1117:94:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7547,
                    "nodeType": "StructuredDocumentation",
                    "src": "1217:56:42",
                    "text": "@notice Returns the underlying fCash ID of the token"
                  },
                  "functionSelector": "0558d500",
                  "id": 7552,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getfCashId",
                  "nameLocation": "1287:10:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1297:2:42"
                  },
                  "returnParameters": {
                    "id": 7551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7550,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7552,
                        "src": "1323:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:9:42"
                  },
                  "scope": 7606,
                  "src": "1278:54:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7553,
                    "nodeType": "StructuredDocumentation",
                    "src": "1338:62:42",
                    "text": "@notice Returns the underlying fCash maturity of the token"
                  },
                  "functionSelector": "e16695b5",
                  "id": 7558,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaturity",
                  "nameLocation": "1414:11:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7554,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1425:2:42"
                  },
                  "returnParameters": {
                    "id": 7557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7556,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1458:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7558,
                        "src": "1451:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 7555,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "1451:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1450:17:42"
                  },
                  "scope": 7606,
                  "src": "1405:63:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7559,
                    "nodeType": "StructuredDocumentation",
                    "src": "1474:82:42",
                    "text": "@notice True if the fCash has matured, assets mature exactly on the block time"
                  },
                  "functionSelector": "a1093295",
                  "id": 7564,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hasMatured",
                  "nameLocation": "1570:10:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7560,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1580:2:42"
                  },
                  "returnParameters": {
                    "id": 7563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7562,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7564,
                        "src": "1606:4:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7561,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1606:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1605:6:42"
                  },
                  "scope": 7606,
                  "src": "1561:51:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7565,
                    "nodeType": "StructuredDocumentation",
                    "src": "1618:49:42",
                    "text": "@notice Returns the underlying fCash currency"
                  },
                  "functionSelector": "cf387fed",
                  "id": 7570,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrencyId",
                  "nameLocation": "1681:13:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7566,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1694:2:42"
                  },
                  "returnParameters": {
                    "id": 7569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7568,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1727:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7570,
                        "src": "1720:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7567,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1720:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1719:19:42"
                  },
                  "scope": 7606,
                  "src": "1672:67:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7571,
                    "nodeType": "StructuredDocumentation",
                    "src": "1745:51:42",
                    "text": "@notice Returns the components of the fCash idd"
                  },
                  "functionSelector": "48d8f98d",
                  "id": 7578,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDecodedID",
                  "nameLocation": "1810:12:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1822:2:42"
                  },
                  "returnParameters": {
                    "id": 7577,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7574,
                        "mutability": "mutable",
                        "name": "currencyId",
                        "nameLocation": "1855:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "1848:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7573,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1848:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7576,
                        "mutability": "mutable",
                        "name": "maturity",
                        "nameLocation": "1874:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7578,
                        "src": "1867:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 7575,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "1867:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1847:36:42"
                  },
                  "scope": 7606,
                  "src": "1801:83:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7579,
                    "nodeType": "StructuredDocumentation",
                    "src": "1890:148:42",
                    "text": "@notice Returns the current market index for this fCash asset. If this returns\n zero that means it is idiosyncratic and cannot be traded."
                  },
                  "functionSelector": "cb803ceb",
                  "id": 7584,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketIndex",
                  "nameLocation": "2052:14:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2066:2:42"
                  },
                  "returnParameters": {
                    "id": 7583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7582,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7584,
                        "src": "2092:5:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7581,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2092:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2091:7:42"
                  },
                  "scope": 7606,
                  "src": "2043:56:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7585,
                    "nodeType": "StructuredDocumentation",
                    "src": "2105:200:42",
                    "text": "@notice Returns the token and precision of the token that this token settles\n to. For example, fUSDC will return the USDC token address and 1e6. The zero\n address will represent ETH."
                  },
                  "functionSelector": "ee719bc8",
                  "id": 7593,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnderlyingToken",
                  "nameLocation": "2319:18:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7586,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2337:2:42"
                  },
                  "returnParameters": {
                    "id": 7592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7589,
                        "mutability": "mutable",
                        "name": "underlyingToken",
                        "nameLocation": "2370:15:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7593,
                        "src": "2363:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 7588,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7587,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "2363:6:42"
                          },
                          "referencedDeclaration": 2763,
                          "src": "2363:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7591,
                        "mutability": "mutable",
                        "name": "underlyingPrecision",
                        "nameLocation": "2394:19:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7593,
                        "src": "2387:26:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7590,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2387:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2362:52:42"
                  },
                  "scope": 7606,
                  "src": "2310:105:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 7594,
                    "nodeType": "StructuredDocumentation",
                    "src": "2421:135:42",
                    "text": "@notice Returns the asset token which the fCash settles to. This will be an interest\n bearing token like a cToken or aToken."
                  },
                  "functionSelector": "f8eef10f",
                  "id": 7605,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetToken",
                  "nameLocation": "2570:13:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2583:2:42"
                  },
                  "returnParameters": {
                    "id": 7604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7598,
                        "mutability": "mutable",
                        "name": "assetToken",
                        "nameLocation": "2616:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7605,
                        "src": "2609:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2763",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "id": 7597,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7596,
                            "name": "IERC20",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2763,
                            "src": "2609:6:42"
                          },
                          "referencedDeclaration": 2763,
                          "src": "2609:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2763",
                            "typeString": "contract IERC20"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7600,
                        "mutability": "mutable",
                        "name": "assetPrecision",
                        "nameLocation": "2635:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7605,
                        "src": "2628:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7599,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2628:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7603,
                        "mutability": "mutable",
                        "name": "tokenType",
                        "nameLocation": "2661:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 7605,
                        "src": "2651:19:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_TokenType_$4834",
                          "typeString": "enum TokenType"
                        },
                        "typeName": {
                          "id": 7602,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7601,
                            "name": "TokenType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4834,
                            "src": "2651:9:42"
                          },
                          "referencedDeclaration": 4834,
                          "src": "2651:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_TokenType_$4834",
                            "typeString": "enum TokenType"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2608:63:42"
                  },
                  "scope": 7606,
                  "src": "2561:111:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7614,
              "src": "270:2404:42",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7607,
                    "name": "IWrappedfCash",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7606,
                    "src": "2712:13:42"
                  },
                  "id": 7608,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2712:13:42"
                },
                {
                  "baseName": {
                    "id": 7609,
                    "name": "IERC777",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3171,
                    "src": "2727:7:42"
                  },
                  "id": 7610,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2727:7:42"
                },
                {
                  "baseName": {
                    "id": 7611,
                    "name": "IERC4626",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7243,
                    "src": "2736:8:42"
                  },
                  "id": 7612,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2736:8:42"
                }
              ],
              "canonicalName": "IWrappedfCashComplete",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 7613,
              "linearizedBaseContracts": [
                7613,
                7243,
                3171,
                7606
              ],
              "name": "IWrappedfCashComplete",
              "nameLocation": "2687:21:42",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 7614,
              "src": "2677:70:42",
              "usedErrors": []
            }
          ],
          "src": "41:2707:42"
        },
        "id": 42
      }
    }
  }
}
